php sesije

5

php sesije

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

@Rastafarii
Pogledaj, kada se pokusas ulogovati, da li ti unutar Cookies-a ostaje PHPSESSID.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 07 Okt 2006
  • Poruke: 34
  • Gde živiš: Zrenjanin

Ako si ovo stavio na pocetku svake strane :
Rastafarii ::
odnosno, sve ono sto bi trebalo da stavis na vrh svake stranice:

<?php session_start(); $username=$_SESSION['username']; $password=$_SESSION['password']; if ($username != "" and $password != "") {    $respass = mysql_query("SELECT password FROM ime_tabele WHERE username='$username'");    $row = mysql_fetch_array($respass);        if ($password != $row{'password'}) {       echo "<script>location.href='login.php';</script>";       die();       } } else {    echo "<script>location.href='login.php';</script>";    die(); } ?>

U oba slucaja redirekcija je na login.php i stalno ce te vracati na tu stranu.
Druga stvar. Zar nebi trebao na pocetku da proveris da li postoje sesije :
if (isset($_SESSION['username'] AND $_SESSION['password']))   {
pa tek onda da radis proveru iz baze.
Ovako za bilo koga ko pristupi toj strani kreira se nova sesija i ponovo ga vraca na login.php



offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

Citat:@rastafarii: zar ti nije logicnije da se zapitas da nije greska do "tebe" a ne do browsera, jer ti browser na svemu ostalom radi normalno, a samo na tom jednom primeru ne..

Nisam ja ni pomislio da je GRESKA do browsera, nego da se razlikuje interpretiranje, a znam da je IE takav kakav je... Ono sto sam ja rekao je da FF ima problema sa tim, i da ne znam zasto. To sto si ti rekao jeste jedna od solucija, koja je usput vrlo verovatna.

Dopuna: 04 Feb 2007 4:56

@taksistaZR: naravno da je redirekcija u oba slucaja na istu stranu, kad su oba slucaja pogresna. Pravi sadrzaj stranice ide ispod toga.

@igor86: proverio sam, nema Sad

@all: izvalio sam gde je greska (ipak je meni optimalno radno vreme od 02 - 06 AM Smile). Problem je bio u tome sto sam pokusavao da izvucem podatke iz sesija koje jos uvek nisam setovao...

Tacan kod:

<?php session_start(); $connect = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());    mysql_select_db($dbname, $connect) or die(mysql_error());    if (isset($_POST['logmein'])) {       $usr_pass = md5($_POST['password']);       $usr_user = $_POST['username'];           $respass2 = mysql_query("SELECT password FROM ime_tabele WHERE username='$usr_user'");       $row = mysql_fetch_array($respass2);          if ($usr_pass == $row{'password'}) {          $_SESSION['username'] = $usr_user;          $_SESSION['password'] = $usr_pass;          echo "<script>location.href='index.php';</script>";          die();          }          else {             echo "<script>location.href='login.php';</script>";             die();             }    } $username=$_SESSION['username']; $password=$_SESSION['password']; if ($username != "" and $password != "") {        $respass = mysql_query("SELECT password FROM ime_tabele WHERE username='$username'");    $row = mysql_fetch_array($respass);        if ($password != $row{'password'}) {           $_SESSION['username'] = "";    $_SESSION['password'] = "";    echo "<script>location.href='login.php';</script>";    die();    }    } else {          echo "<form action='login.php' method='post'><input type='text' name='username' value='username' onfocus=\"document.forms[0].elements[0].value=''\"><br><br><input type='password' name='password' value='password' onfocus=\"document.forms[0].elements[1].value=''\"><br><br><input type='submit' name='logmein' value=\"Pristupi\" ></form>";       die();    } ?>

Provereno i radi i u FF. Tek sad mi nije jasno kako je IE radio sa sesijama koje se ponistavaju prilikom logina, i to pre nego sto se podese...

offline
  • Pridružio: 07 Okt 2006
  • Poruke: 34
  • Gde živiš: Zrenjanin

Sad tek videh da je onaj poslednji else vezan za prvi if ... ok onda.

offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

Rastafarii ::
odnosno, sve ono sto bi trebalo da stavis na vrh svake stranice:

<?php session_start(); $username=$_SESSION['username']; $password=$_SESSION['password']; if ($username != "" and $password != "") {    $respass = mysql_query("SELECT password FROM ime_tabele WHERE username='$username'");    $row = mysql_fetch_array($respass);        if ($password != $row{'password'}) {       echo "<script>location.href='login.php';</script>";       die();       } } else {    echo "<script>location.href='login.php';</script>";    die(); } ?>

Ovde je greska u kodu. Ova linija:
$row = mysql_fetch_array($respass);
posto nisi stavio unutar while petlje, nikad nece vratiti $row['password']; vec ce vratiti samo prvu vrednost a to je $row[1]; e sada, ili je ubaci u while petlju, ili ono mysql_fetch_array() promeni u mysql_fetch_assoc()

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

@Blood: ne znam da li je tu greska, ali meni vraca $row{'password'} i sve radi kako treba, nakon sto sam na login.php zamenio redosled setovanja sesije (ako je kliknuto na "ulogujte se") i provere da li je sesija setovana...

offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

hm, bem li ga, desavalo mi se par puta da zeza sam mysql upit, da trazi navodnike, probaj ovako

$respass = mysql_query("SELECT `password` FROM `ime_tabele` WHERE `username`='".$username."'");

Dopuna: 04 Feb 2007 15:08

isto tako probaj malo drugaciji pristup:
$respass = mysql_query("SELECT `id` FROM `ime_tabele` WHERE `username`='".$username."' AND `password`='".$password."'"); if(mysql_num_rows($query) == 0) {  header("Location: login.php"); }

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

@Blood: covece Very Happy rekao sam da radi bez problema... problem je bio u pogresnom rasporedu php koda... Nije ni do upita ni do navodnika nego u tome sto sam pokusavao da proverim sesije pre nego sto ih setujem... Inace, query savrseno radi, sa tim nikada nije bilo problema...

I dalje mi nije jasno kako je IE radio sa tim...

offline
  • Pridružio: 07 Okt 2006
  • Poruke: 34
  • Gde živiš: Zrenjanin

@Blood : $row = mysql_fetch_array($respass) ne mora unutar petlje posto query daje samo jedan rezultat

@Rastafarii : Sad sam probao kod na brzinu, kod mene login radi, ali pristup stranama sa onim kodom ne radi ni na FF ni na IE. Mozda je u pitanju neko podesavanje sa sesijama u mom php.ini ... pogledacu kasnije.

offline
  • Pridružio: 19 Jan 2005
  • Poruke: 286
  • Gde živiš: Tamo daleko,tj.Beograd City

@blood
$row = mysql_fetch_array($respass) ,heh i ja isto ovako pisem,i ako ima samo jedan rezultat,jbg navika,

@Rastafarii ,heh ja i dalje nerazumem kako IE uopste funkcionise Smile ,nebih da lupam,al bas mislim da je radio zbog niske bezbednosti,ja iskreno nisam imao vremena da se igram s ovim codom,jer stvarno sad imam mnogo obaveza (izlasci,pijancenje,treninzi,ucenje i naravno zene L) ),tako da ste me spaliti ,e da,vec kad spomenuh zene,juce sam video enu iz VB,nije nista posebno,doduse ima dobru guzu Smile,steta sto je kod nje bio i marko Sad


btw kako mogu da posaljem sakriveno polje preko post-a,hocu da npr

echo "<a href= 'index.php?act=izmeni&id' " , mogao bi to da posaljem uz get,al ce se videti ime table u kojoj se menjaju podaci,sto ne bih zeleo,a na drugoj strani bi "vatao" podatke

$id=$_GET['id'];
$tabela=$_POST['tabela'];
i slao bi ih u query

Ko je trenutno na forumu
 

Ukupno su 827 korisnika na forumu :: 5 registrovanih, 1 sakriven i 821 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Fisherman, ivica976, Koridor, Marko Marković, VJ