[ bigguy @ 20.11.2006. 21:37 ] @
imam sledeci kod koji obradjuje stranicu login.html
Code:
<?php
/*************************
 * stranica za logovanje * 
 *************************/
header("Expires: Sat, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: post-check=0, pre-check=0",false);
session_cache_limiter();

session_start();
session_unset();

$username=$_POST['user_name'];
$sifra=$_POST['password'];

if (empty($username) or empty($sifra))
{
    header("Location: pogresan_log.html");
    exit();
}
require_once('db_vars.inc');
$username = strtolower($username);
    $md5_sifra = md5($sifra);
    $query = "SELECT user_name, user_id
              FROM user
              WHERE user_name = '$username'
              AND password = '$md5_sifra'";
    $result = mysql_query($query);
    if (!$result || mysql_num_rows($result) < 1){
      header("Location: pogresan_log.html");
      exit();
    } else {
        extract(mysql_fetch_assoc($result));
        $_SESSION['user_name'] = $user_name;
        $_SESSION['SID']=session_id();
    }
header("Location: rezervacija.php");
$_SESSION['link'] = $_SERVER['REQUEST_URI'];
?>

stranica login.html
Code:
<HTML>
<HEAD>
<TITLE>Login</TITLE>
</HEAD>
<BODY>
<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0 ALIGN=CENTER WIDTH=621>
<TR>
 <TD>
<P>LOGIN</P>
<FORM ACTION="login.php" METHOD="POST">
<P>Korisničko ime<BR>
<INPUT TYPE="TEXT" NAME="user_name" VALUE="" SIZE="10" MAXLENGTH="15"></P>
<P>Šifra<BR>
<INPUT TYPE="password" NAME="password" VALUE="" SIZE="10" MAXLENGTH="15"></P>
<P><INPUT TYPE="SUBMIT" NAME="submit" VALUE="ULOGUJ SE"></P>
</FORM>

 </TD>
</TR>
</TABLE>
</BODY>
</HTML>

a na pocetku stranice rezervacija.php funkciju isloged() koja proverava da li je korisnik ulogovan i ako nije vraca ga na stranicu login.php
Code:
function isloged()
{
    if (empty($_SESSION['user_name']) and $_SESSION['SID']!=session_id())
    {
        header("Location: login.php");
        exit();
    }
}

e sad kad probam da se ulogujem on me vraca na stranicu login.html i nista se ne desava. proverio sam sto puta i nigde se nista ne salje na izlaz sto znaci da bi header() trebalo da radi, ali ne radi. ako neko vidi u cemu je problem, neka mi kaze molim vas...
[ Nemanja Avramović @ 20.11.2006. 22:54 ] @
Debuguj malo. Za početak, šta ti vraća print_r($_SESSION); na toj stranici gde proveravaš login?
[ glavince @ 21.11.2006. 00:55 ] @
Ovo meni izgleda sasvim u redu.
Sigurno u bazi imas strtolower user_name i md5 password.
Proveri require_once('db_vars.inc'); ako vec nemas, napravi neki error report.
I jos jedan savjet, escape mysql injection:
$username = mysql_real_escape_string($_POST['user_name']);
$sifra = md5(mysql_real_escape_string($_POST['password']));
[ bigguy @ 21.11.2006. 18:31 ] @
hvala na sugestijama... malo sam preformulisao funkciju isloged koja sada izgleda ovako
Code:
function isloged()
{
    if (!empty($_SESSION['user_name']) and $_SESSION['SID']==session_id())
    {
        return true;
    }
    else {
        return false;
    }
}

i sada sve fercera...
nego interesuje me vas komentar sto se tice bezbednosti ovakvog resenja....
i jos samo da pitam jednu stvar:
interesuje me kako nekoga da odlogujem ako ode sa sajta a da pri tome nije pritisnuo dugme logout?
[ Nemanja Avramović @ 21.11.2006. 21:19 ] @
Sesija će se prekinuti kad se prekine komunikacija browsera i servera.
[ Jezdimir Lončar @ 21.11.2006. 23:45 ] @
Da...
U tome je prednost sessija nad cookima...
[ mika @ 22.11.2006. 07:53 ] @
Jedno pitanje, kad ste već otvorili tu temu: da li se, ako se korisnik već "odlogovao", ako klikne na "back", korisnik vraća ponovo u "login" stanje ili ne? To mi nije baš najjasnije, zbog toga što se podatak o sesiji čuva u URL-u?
[ bigguy @ 22.11.2006. 11:00 ] @
nisam siguran ali mislim da ne bi trebalo da se vraca u stanje logovanog korisnika ukoliko za logout koristis ovo:
Code:
session_unset();
session_destroy();

jer ovime ponistavas tj. brises sve promenljive sessiona...
ako gresim neka me neko ispravi
[ sale83 @ 22.11.2006. 11:43 ] @
Citat:
Nemanja Avramović
Sesija će se prekinuti kad se prekine komunikacija browsera i servera.

Pa onda Neohacker kaze:
Citat:
Neohacker: Da...
U tome je prednost sessija nad cookima...

http://au.php.net/manual/en/function.setcookie.php

setcookie() parameters explained
expire ( Kao treci parametar)

The time the cookie expires... bla bla
Pa tamo u manual-u kaze:
...
time()+60*60*24*30 will set the cookie to expire in 30 days. If not set, the cookie will expire at the end of the session (when the browser closes).

Pitanje za Neohacker
I gde je tu prednost ????

:)

Poz
sale
[ Jezdimir Lončar @ 22.11.2006. 11:44 ] @
Mislim da kad se uništi cookie (bilo session ili ovaj običam) da će korisnik biti izlogovan dok se ponovo ne uloguje.
Međutim on će vidjeti members stranicu ako klikne back sve dok je ne osvježi ili klikne na neki link na njoj.