[ MACTEPx @ 21.08.2011. 18:22 ] @
Pokusavam da napravim login za sajt. Napravio sam login.php koji izgleda ovako:
Code:
<?php
           session_start();
           if ( isset($_POST["submituj"]))
            {
               $sifra=$_POST["sifra"];
               if ($sifra=="sifra") {
                   echo "Pozdrav";
                   $_SESSION["login"]="ok";
                   header("Location: index.php");
               }
               else {
                   echo "Pogresna sifra!";
               }
            }
           ?> 

i index.php
Code:
<?php 
        session_start(); 
        if ($_SESSION['login'] != "ok" ) { 
            header("Location: login.php"); 
            exit(); 
        } 
 ?> 


Kad se ulogujem preko login.php, skripta me prebaci na index.php i to je sve normalno do trenutka kad npr. refreshujem index.php ili pokusam da predjem na neku drugu stranicu koja ima isti php kod za proveru logovanja kao index.php. Tom prilikom kao da se sadrzaj $_SESSION["login"] izbrise i skripta me preusmeri na login.php. Kako da resim ovaj problem da sesija traje sve dok ne uradim logout?
[ Milan Kragujevic @ 22.08.2011. 10:23 ] @
Probaj ovako:
sve session_start(); zameni sa
if(!isset($_SESSION)) {
session_start();
}
[ b0ris @ 22.08.2011. 13:13 ] @
Postavi session_start na pocetak index.php fajla, kako bi te se sesija palila za svako otvaranje stranice. (Nije potrebno da imas session_start na svakom koraku)

login proveravas ok, ali bi bolje bilo da imas recimo md5 podataka korisnika iz baze (username, pass) pa da na osnovu toga vidis da li je dobar korisnik, umesto "ok" :D

Pogledaj takodje da li su ti kolacici ok.

Neki patern koji bi mogao da koristis je da na pocetku odma proveravas sesiju. Za debug uradi dump sesije kako bi video da li u njoj ima nesto. Uradi to pre svakog logiranja da mozes da proveris.


A da sad se setih, takodje vidi da nemas neki ispis html-a pre nego sto opalis session_start, session_start ne trpi output pre njenog pokretanja.
[ Zlatni_bg @ 22.08.2011. 15:12 ] @
Milane, a kako zamisljas onda da se iscitaju podaci iz vec zacete sesije?

Vrlo je verovatno to sto je b0ris rekao, cini mi se da MACTEPx ovo include-uje u drugi php fajl :)
[ ivan.a @ 22.08.2011. 22:24 ] @
-Za debagovanje koristi sledeći kod i stavi pre bilo kog drugog koda:
Code:
ini_set ("display_errors", "1");
error_reporting(E_ALL);


-Na kraju skripte dodaj
Code:
var_dump($_SESSION);

...da vidiš koje su sesije setovane.

Za proveru sesije koristi isset :
Code:
if ( isset($_SESSION['login']) ) ...
ili
if ( isset($_SESSION["login"]) AND $_SESSION["login"]=="ok" ) {
//KORISNIK JE PRIJAVLJEN
} else {
//KORISNIK NIJE PRIJAVLJEN
}


Takodje, posle header("Location: index.php"); dodaj i exit; (ili die;) kako kako skripta ne bi nastavila da se izvršava dok se redirektuje stranica.
[ MACTEPx @ 23.08.2011. 09:16 ] @
uradio sam dump sesije:
login.php: array(0) { }
kad se ulogujem, skripta me prebaci na index.php: okarray(1) { ["login"]=> &string(2) "ok" }
ALI kad uradim refresh ili pokusam da predjem na neku drugu stranicu opet me vrati na login.php: array(0) { } kao da se izbrisala cela sesija od malopre.

Inace stavio sam session_start na pocetku tako da nije do toga a kolacici su ok jer drugi sajtovi rade normalno. Stvarno ne znam sta bi mogao da bude problem.