[ Mladenko @ 13.01.2005. 14:32 ] @
Kako da znam koji user je logovan i kako da uvek znam njegov username? Kukiji ne dolaze u obzir....

primer:
Code:
<?php
//ovo je u login.php
$user = $_POST['user'];
...
?>

<?php
//Ovo je u members.php
...
print "$user";
...
?>



Ono sto mi treba je da u svakoj skripti znam username logovanog korisnika a ne da ih postujem svaki put u sledecu skriptu.
[ Jbyn4e @ 13.01.2005. 15:00 ] @
session....
www.php.net/session_start
vise o loginu:
http://www.free2code.net/plugins/articles/read.php?id=99
http://www.devshed.com/c/a/PHP...ing-a-Secure-PHP-Login-Script/
... itd itd...potrazi po google-tu, ja sam ti ove linkove dao trazeci reci php session login...
[ MileG @ 13.01.2005. 16:02 ] @
Da da pomocu sesija. Imas na forumu ovde negdje dosta o tome kako i sta. Potrazi malo prvo ovde na forumu pa onda naravno i na google :o)
[ vladimirn @ 13.01.2005. 18:49 ] @
Pa vidi, ja to radim ovako, mozda ti posluzi.
Dakle, nakon upisivanja korisnickog imena i lozinke, prebacujem ga na script koji proverava da li je ili nije korisnik.
Taj script izgleda otprilike ovako:
Code:

<?
/* Skript za provera korisnika */
session_start();  // Pocetak sesije

include 'funkcije.php';
// konvertujem u jednoatvnije varijable
$username = $_POST['username'];
$password = $_POST['password'];

if((!$username) || (!$password)){ // ukoliko  $username ili $password nije upisan
    echo "Niste uneli tacne podatke! <br />";// neka akcija
    include 'login.php'; //ukljucujem ponovo login stranicu
    exit();
}

//Konvertujem password u md5 
$password = md5($password);
// naravno proveram ima li takav korisnik u bazi
$sql = mysql_query("SELECT * FROM korisnici WHERE username='$username' AND password='$password' AND activated='1'");// ovo activated proverava da li je korisnik aktivirao nalog, jer ja volim da se nakon registracije posalje mail u kojem korisnik dobija kod za aktvaciju - mozes i bez toga
$login_check = mysql_num_rows($sql);

if($login_check > 0){
    while($row = mysql_fetch_array($sql)){
    foreach( $row AS $key => $val ){
        $$key = stripslashes( $val );
    }
        // E ovde registrujem neke varijable
        session_register('ime');
        $_SESSION['ime'] = $ime;
        session_register('prezime');
        $_SESSION['prezime'] = $prezime;
        session_register('email');
        $_SESSION['email'] = $email;
        session_register('userid');
        $_SESSION['userid'] = $userid;
   // upisujem u bazu njegov poslednji dolazak
    mysql_query("UPDATE korisnici SET zadnji_login=now() WHERE userid='$userid'");

           // prebacujem ga na stranicu login success, naravno ti mozes da uradis kako zelis
    header("Location: login_success.php");
    } 
         // e ako nije lepo upisao korisnicko ime i lozinku
} else {
    //onda ga lepo prebacim ponovo na neku stranicu, u ovom slucaju opet login.php
    include 'login.php';
}
?>


E, znaci ovde sam ja lepo registrovao neke session varijablice, i prebacio korisnika gde zelim.
Dalje ja na pocetku svake strane pocnem sa sledecim:
Code:

<?
session_start(); //oznacava sesiju
header("Cache-control: private"); //ispravkla baga u IE6
if ($_SESSION) // kazem da ukoliko sesija postoji uradi ono posle ovoga
{
?> 
E ovde moze da ide sta hoces, mozda neki html ili ne znam sta, nije bitno, znaci tu ti ide desavanje ukoliko je korisnik u sesiji
<? 
} else {
?>
E ovde ono sto dobije ukoliko nije u sesiji :)
<?
} //zatvoricemo taj else
?>


Nadam se da ce ovo pomoci.
Pozdrav
Vladimir
[ Mladenko @ 17.01.2005. 22:55 ] @
Tvoje resenje i radi i ne radi....

Kada stavim session_start() u moju login skriptu, napravi mi se fajl u mom
Windows folderu (ne znam zasto tu) sa nazivom session<pa neki
brojevi>. U njemu pise nesto kao: user|:s:5:marko (nisam bas siguran u
vezi ovog "s" i ovog "5", ali u principu to je to). Problem nastaje
kada pokusam da u members skripti printujem username sa : print
$_SESSION['user'], jer onda ne printuje nista. Kako da storujem sesiju
u bazu podataka i kako iz nje da vadim username tekuceg korisnika? Jer
moram da za to pravim posebnu tabelu?


Poz,

Mladenko
[ noviKorisnik @ 17.01.2005. 23:31 ] @
Citat:
Mladenko:
Kada stavim session_start() u moju login skriptu, napravi mi se fajl u mom
Windows folderu (ne znam zasto tu) sa nazivom session<pa neki
brojevi>.

U Windows folderu ti se verovatno nalazi i fajl php.ini i verovatno treba malo da ga izmeniš. Otvori fajl u editoru i potraži deklaraciju session.save_path i postavi vrednost direktorijuma gde želiš da server čuva fajlove sesija. Recimo, kod mene je to podešeno ovako
Code:
session.save_path = C:\PHP\sessiondata

Ovo je objašnjeno na www.php.net/session i još bolje bi bilo da prostudiraš tu stranicu...
Citat:
U njemu pise nesto kao: user|:s:5:marko (nisam bas siguran u
vezi ovog "s" i ovog "5", ali u principu to je to).

Nije potrebno da čitaš te fajlove. Njih čita PHP. Ako te interesuje zašto je tako zapisano - www.php.net/serialize
Citat:
Problem nastaje kada pokusam da u members skripti printujem username sa :
print $_SESSION['user'], jer onda ne printuje nista.

Da bi printala vrednost $_SESSION ['user'], negde mora prethodno da se izvrši dodela te vrednosti. Proveri.
Citat:
Kako da storujem sesiju u bazu podataka i kako iz nje da vadim username tekuceg korisnika? Jer moram da za to pravim posebnu tabelu?

Sesiju ne storuješ u bazu jer se čuva na disku u fajlu. Username možeš da vadiš ako ga prethodno postaviš. U bazi možeš da čuvaš podatke o korisnicima i da pri logovanju proveravaš kombinaciju user/pass i, ako je to u redu, pokupiš podatke o korisniku iz baze i postaviš ih u sesiju - sve ovo baš i radi predloženi primer par poruka iznad ove, a objašnjavaju i linkovi koje je Ljupče predložio.
[ Mladenko @ 18.01.2005. 11:28 ] @
*noviKorisnik:*
>>Da bi printala vrednost $_SESSION ['user'], negde mora
>>prethodno da se izvrsi dodela te vrednosti. Proveri.

Izvrsena je dodela vrednosti u login.php skripti sa session_register
('user'), ali u members.php ne printa $_SESSION['user']

>>sve ovo bas i radi
>>predlozeni primer par poruka iznad ove

Po tom primeru sam i radio, ali nista ne printa u browseru.