[ Nikola Janković @ 17.02.2011. 17:22 ] @
Vidite, imam formu za logovanje (slika 1). Ulogujem se, i kliknem na "Dodaj ucenika". Prikaže mi formu za dodavanje učenika, ispod forme za logovanje (slika 2).
Poenta je da forma za dodavanje učenika bude na mestu gde je forma za logovanje, naravno posle uspešnog logovanja.

Slika 1: http://img98.imageshack.us/i/66468063.jpg/

Slika 2: http://img171.imageshack.us/i/57543508.jpg/
[ mish_ns @ 17.02.2011. 17:42 ] @
Daj nam kod da vidimo kako si radio...ovako mozemo samo da nagadjamo.
[ Nikola Janković @ 17.02.2011. 20:53 ] @
index.php

Code:

<?php
session_start();
include "config.php";
?>
<title>Skolica</title>
<LINK rel="stylesheet" href="bla.css" type="text/css">

<?php
if (isset($_POST['login'])) {
    
    $username = mysql_real_escape_string($_POST['username']);
    
    $res = mysql_query("SELECT salt FROM user WHERE username = '".$username."'");
    $salt = mysql_fetch_assoc($res);
    $password = mysql_real_escape_string($_POST['password']);
    $password = sha1(sha1($password).sha1($salt['salt']));
    
    $result = mysql_query("SELECT username,userID FROM `user` WHERE `username` = '".$username."' AND password = '".$password."' AND active=1");
    
    if (mysql_num_rows($result) == 1) {
        $row = mysql_fetch_assoc($result);
        $_SESSION['auth_userID'] = $row['userID'];
        $_SESSION['auth_username'] = $username;
    } else {
        ?><table width="100%" height="100%">
                <tr><td align="center" valign="middle"> 
                    <div class="dialog">
                        <b>Elektronski dnevnik</b><p>
                        Pogresno korisnicko ime ili lozinka! Pokusajte ponovo.<br> <a href="index.php">Nazad na prijavljivanje</a>
                    </div>
                </td></tr>
            </table><?php 
    }
}
if (!isset($_SESSION['auth_userID'])) {
    if (!isset($_GET['register'])) { //to register no need to be logged in
        ?>
        <form action="index.php" method="post">
            <table width="100%" height="100%">
                <tr><td align="center" valign="middle"> 
                    <div class="dialog">
                        <b>Elektronski dnevnik</b><p>
                        <a href='index.php'>Pocetna</a> | <a href='index.php?edit'>Izmena</a> | <a href='admin.php'>Admin</a><p>
                        <label>Korisnicko ime: </label><input class="tb_background" type="text" name="username" /><br><br>
                        <label>Lozinka: </label><input class="tb_background" type="password" name="password" /><br><br>
                        <input type=submit value="Prijavi se" name='login'> <input type=reset value="Obrisi polja"> 
                    </div>
                </td></tr>
            </table>
        </form>
        <?php
    }
    die();
}
?>
<form action="index.php" method="post">
    <table width="100%" height="100%">
        <tr><td align="center" valign="middle"> 
            <div class="dialog">
                <b>Elektronski dnevnik</b><p>
                <a href='index.php'>Pocetna</a> | <a href='index.php?edit'>Izmena</a> | <a href='admin.php'>Admin</a><p>
                <p><strong>Prijavljeni ste kao: <?php echo $_SESSION['auth_username'];?></strong> <a href='index.php?logout'>Izadji</a></p> <br />
            </div>
        </td></tr>
    </table>
</form>

<?php
if (isset($_GET['logout'])) {
    unset($_SESSION['auth_userID']);
    unset($_SESSION['auth_username']);
    echo "Uspesno ste se izlogovali!";
}
if (isset($_GET['edit'])) {
    if (isset($_POST['editUser'])) {
        $notRequired = array("password","password2"); //passwords won't be checked, as they are not required
        foreach ($_POST as $k=>$v) {
            if ($v == "" && !in_array($k,$notRequired)) {
                $error[$k] = "<strong>Nista niste uneli.</strong>";
            }
        }
        $username = mysql_real_escape_string($_POST['username']);
        $password = mysql_real_escape_string($_POST['password']);
        $password2 = mysql_real_escape_string($_POST['password2']);
        $oldPassword = mysql_real_escape_string($_POST['oldPassword']);
        $email = mysql_real_escape_string($_POST['email']);
        
        if (!check_email($_POST['email'])) {
            $error['email'] .= " <strong>Email nije ispravan!</strong>";
        }
        $res = mysql_query("SELECT email FROM user WHERE email='".$email."' AND userID != '".$_SESSION['auth_userID']."'");
        if (mysql_num_rows($res) == 1) {
            $error['email'] .= " <strong>Email vec postoji!</strong>";
        }
        $res = mysql_query("SELECT username FROM user WHERE username='".$username."' AND username != '".$username."'");
        if (mysql_num_rows($res) == 1) {
            $error['username'] .= " <strong>Korisnicko ime vec postoji!</strong>";
        }
        if (($password != "" && $password2 != "") && ($password != $password2)) {
            $error['password'] .= " <strong>Lozinke se ne podudaraju!</strong>";
        }
        
        $res = mysql_query("SELECT salt FROM user WHERE userID = '".$_SESSION['auth_userID']."'");
        $salt = mysql_fetch_assoc($res);
        $oldPassword = sha1(sha1($oldPassword).sha1($salt['salt']));
        $res = mysql_query("SELECT password FROM user WHERE userID='".$_SESSION['auth_userID']."' AND password = '".$oldPassword."'");
        if (mysql_num_rows($res) == 0) {
            $error['oldPassword'] .= " <strong>Lozinka nije ispravna!</strong>";
        }
        
        if (count($error) == 0) {
            $query = "UPDATE user SET username='".$username."', email='".$email."'";
            if ($password != "") {
                $salt = rand(100,999);
                $password = sha1(sha1($password).sha1($salt));
                $query .= ", password='".$password."', salt='".$salt."',";
            }
            $query .= " WHERE userID='".$_SESSION['auth_userID']."'";
            $_SESSION['auth_username'] = $username; 
            if (mysql_query($query)) {
                echo "<p><strong>Uspesno ste izmeni nalog.</strong></p>";
            } else {
                echo "<p><strong>Nalog NIJE sacuvan. ".mysql_error()."</strong></p>";
            }
        }
    }
    $rs = mysql_query("SELECT username, email FROM user WHERE userID = ".$_SESSION['auth_userID']." AND active='1'");
    if (mysql_num_rows($rs) == 0) {
        die("Korisnik ne postoji!");
    }
    $row = mysql_fetch_assoc($rs);
    $_POST['username'] = $row['username'];
    $_POST['email'] = $row['email'];
    ?>
    <form action="index.php?edit" method="post">
    <table width="100%" height="100%">
                <tr><td align="center" valign="middle"> 
                    <div class="dialog">
                        <b>Elektronski dnevnik</b><p>
                        <a href='index.php'>Pocetna</a> | <a href='index.php?edit'>Izmena</a> | <a href='admin.php'>Admin</a><p>
                        <p><label>*Korisnicko ime:</label><input type="text" name="username" value='<?php echo $_POST['username'];?>' />
        <?php echo(isset($error['username']))?$error['username']:"";?></p>
        
        <p><label>*Email:</label><input type="text" name="email" value='<?php echo $_POST['email'];?>' />
        <?php echo(isset($error['email']))?$error['email']:"";?></p>
        
        <p><label>*Lozinka:</label><input type="password" name="oldPassword" value='<?php echo $_POST['oldPassword'];?>' />
        <?php echo(isset($error['oldPassword']))?$error['oldPassword']:"";?></p>
        
        <p><label>*Nova lozinka:</label><input type="password" name="password" value='<?php echo $_POST['password'];?>' />
        <?php echo(isset($error['password']))?$error['password']:"";?></p>
        
        <p><label>*Ponovite novu lozinku: </label><input type="password" name="password2" value='<?php echo $_POST['password2'];?>' />
        <?php echo(isset($error['password2']))?$error['password2']:"";?></p>
        
        <input type='submit' name='editUser' value='Izmeni' />
                    </div>
                </td></tr>
            </table>
        
    </form>
    <?php
}
[ mish_ns @ 17.02.2011. 22:27 ] @
Jel imas neki css?
Meni pada na pamet da, ako se uspesno loguje, stavis display:none za formu.
[ Nikola Janković @ 18.02.2011. 06:48 ] @
Imam css, pogledaj slike iz prve poruke. ;)
[ mish_ns @ 18.02.2011. 09:08 ] @
Mozes okaciti i njega...Kazem probaj staviti forme u div tag, i podesi display osobinu na block. Kada se uspesno loguje prebaci je na none.
Najbolje bi bilo kada bi mogao postaviti ceo kod.(i bazu)

[Ovu poruku je menjao mish_ns dana 18.02.2011. u 10:19 GMT+1]
[ Nikola Janković @ 18.02.2011. 11:25 ] @
Mogu da okačim i ostatak, ali se sve svodi na ovaj kod.
U ostalim kodovima je problem isti.

Dobio sam i predlog da kod razdelim u više fajlova, pa da ih pozivam po potrebi.
Kako to najefikasnije mogu odraditi?

Nije loš ni predlog za div tag.

Moram da dodam i da je sve u eksperminetalnoj fazi, tako da nije sve kompletno.
[ mish_ns @ 18.02.2011. 11:44 ] @
Pa mozes i tako...
Recimo mozes razdeliti kod na login_succsess, login_incorrect, logged_in...
Pa npr. umesto:
Code:

if (isset($_POST['login'])) {
    
    $username = mysql_real_escape_string($_POST['username']);
    
    $res = mysql_query("SELECT salt FROM user WHERE username = '".$username."'");
    $salt = mysql_fetch_assoc($res);
    $password = mysql_real_escape_string($_POST['password']);
    $password = sha1(sha1($password).sha1($salt['salt']));
    
    $result = mysql_query("SELECT username,userID FROM `user` WHERE `username` = '".$username."' AND password = '".$password."' AND active=1");
    
    if (mysql_num_rows($result) == 1) {
        $row = mysql_fetch_assoc($result);
        $_SESSION['auth_userID'] = $row['userID'];
        $_SESSION['auth_username'] = $username;
    } else {
        ?><table width="100%" height="100%">
                <tr><td align="center" valign="middle"> 
                    <div class="dialog">
                        <b>Elektronski dnevnik</b><p>
                        Pogresno korisnicko ime ili lozinka! Pokusajte ponovo.<br> <a href="index.php">Nazad na prijavljivanje</a>
                    </div>
                </td></tr>
            </table>
...
}

stavis:
Code:

if (isset($_POST['login'])) {
    
    $username = mysql_real_escape_string($_POST['username']);
    
    $res = mysql_query("SELECT salt FROM user WHERE username = '".$username."'");
    $salt = mysql_fetch_assoc($res);
    $password = mysql_real_escape_string($_POST['password']);
    $password = sha1(sha1($password).sha1($salt['salt']));
    
    $result = mysql_query("SELECT username,userID FROM `user` WHERE `username` = '".$username."' AND password = '".$password."' AND active=1");
    
    if (mysql_num_rows($result) == 1) {
        $row = mysql_fetch_assoc($result);
        $_SESSION['auth_userID'] = $row['userID'];
        $_SESSION['auth_username'] = $username;
    } else {  

include("login_incorrect.php");} 
        ?>
...
}
[ Nikola Janković @ 18.02.2011. 11:54 ] @
Ok, kapiram ja to sa include, ali ne kapiram na koje celine smem da podelim.

Možeš li da mi "izdeliš" ovu index stranu, da ja vidim na primeru?
[ mish_ns @ 18.02.2011. 12:03 ] @
Pa te delove gde su ti forme, tj. tabele...to nek ti budu celine. Pogledaj sta koja radi i tako ih nazovi...
Najlakse ti je da napravis kopiju celog sajta pa da experimentises...Ili zapakuj ceo kod pa ga postavi ovde+baza, pa da vidimo.
[ Nikola Janković @ 18.02.2011. 12:06 ] @
Ok, probaću u toku dana, pa javljam šta sam uradio. :D

Hvala, na odgovorima.
[ 3way @ 18.02.2011. 12:15 ] @
Ne znam kakve veze baza i css ima sa ovim...
Ako sam dobro shvatio, hoces da prikazes ili jedno ili drugo.

Znaci greska ti je u proveri sesije ili u nekom uslovu.
Uprosti kod, ostavi samo ono najbitnije, skloni sve nepotrebne linije (npr, umesto forme za dodavanje napisi jedan <p></p>) i otkrij gde je greska.
[ Nikola Janković @ 18.02.2011. 12:45 ] @
Citat:
3way: Ne znam kakve veze baza i css ima sa ovim...
Ako sam dobro shvatio, hoces da prikazes ili jedno ili drugo.

Znaci greska ti je u proveri sesije ili u nekom uslovu.
Uprosti kod, ostavi samo ono najbitnije, skloni sve nepotrebne linije (npr, umesto forme za dodavanje napisi jedan <p></p>) i otkrij gde je greska.


Nemaju nikakve veze, zato ih i nisam okačio.

Nisi dobro shvatio, neću da prikažem oba.

Objasniću opet:
želim da se pojavi samo forma za logovanje. Kada se korisnik loguje, da ta forma "nestane" a prikaže se sledeća (u ovom slučaju za unos podataka).
[ 3way @ 18.02.2011. 12:49 ] @
Citat:
hoces da prikazes ili jedno ili drugo.


:)

Dakle, predlog ostaje, uprosti sve do maksimuma i lakse ces pronaci gresku.
[ Nikola Janković @ 18.02.2011. 13:08 ] @
Citat:
3way: :)

Dakle, predlog ostaje, uprosti sve do maksimuma i lakse ces pronaci gresku.


Moja je greška, nisam lepo pročitao. :D

Elem, to što si predložio, već sam uradio.
Jer, kad sam kucao kod, nisam imao "dizajn", tek kasnije sam dodao.

A, i, ako "sklonim" dizajn, neu znati da li je box "preklopljen" drugim...
[ mish_ns @ 18.02.2011. 13:18 ] @
Za ovakvo stanje kakvo jeste...kako css nema veze sa ovim?
ako stavi za svaku formu display osobinu...moze da resi problem.

Evo jednostavan primer.
Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<link rel="stylesheet" type="text/css" href="forma.css">
</head>
<body>
<form id="forma1" name="form1" method="post" action="checklogin.php">
User:<input name="myusername" type="text" id="myusername"><br/>
Pass:<input name="mypassword" type="text" id="mypassword"><br/>
<input type="submit" name="Submit" value="Login">
</form>

<form id="forma2" name="form1" method="post" action="checklogin.php">
User:<input name="myusername" type="text" id="myusername"><br/> 
Pass:<input name="mypassword" type="text" id="mypassword"><br/> 
<input type="submit" name="Submit" value="Login">
</form>
</body>
</html>

forma.css
Code:

#forma1 {
display:none;
border: solid 3px;

#forma2 {
    display: block;
}


Ako probas kod videces da prve forme nema...a druga se uredno pokazuje...

Isto tako moze i za njegov kod...prikaze login formu, ako su podaci ispravni skriva tu login formu i prikazuje drugu..

Jeste budzenje :) al ce da radi 100%.