Sesije i kolacici

b0ne^
/srv/http/Posts: 22Administrator in PHP

PHP sesije i kolacici

[ Sadrzaj ]
[1] Sesije?
[2] Primeri za sesije
[3] Kolacici?
[4] Primeri za kolacice

1) Sesije?
Sesije nam sluze kako bismo zadrzali neke podatke u korisnikovom browseru sve dok se browser ne restartuje. Ti podaci mogu biti bilo kakvi (username, password, privilegije itd...).
Sesije traju sve dok korisnik ne restartuje browser, i kad to uradi one ne staju i moraju iz pocetka da se zadaju. Da bismo u nekom PHP fajlu mogli da koristimo sesije neophodno
je da na pocetku skripte imamo kod session_start();. Sesije korisnici ne mogu da vide vizuelno, i sesija koja se zada na nekom sajtu moze se koristiti samo na tom sajtu.

2) Primeri za sesije
Evo prve i najjednostavnije skripte koja ce zadati sesiju i ispisati njenu vrednost. Kod sesija imamo dve stvari koje trebamo da popunimo, ime sesije i vrednost sesije.

<?php
    session_start();
    $_SESSION['username'] = "b0ne^";
    if(!empty($_SESSION['username']))
    {
        echo htmlspecialchars($_SESSION['username']);
    }
?>

Na stranici cemo dobiti prikaz:

b0ne^

Nekad cete na stranici dobiti gresku:

Notice: A session had already been started - ignoring session_start() in

to mozete resiti na dva nacina... Prvi nacin je tako sto cete pre session_start(); staviti [b]error_reporting(0);, a drugi nacin koji bih vam ja preporucio je da umesto [b]session_start(); stavite:

if(!isset($_SESSION))
{
    session_start();
}

Prakticna primena prvog primena bi bila na primer za login i prikazivanje profila, na primer:

<?php
    if(!isset($_SESSION))
    {
        session_start();
    }
    if(empty($_SESSION['login']))
    {
        echo "
                <form method='POST'>
                    Username: <input type='text' name='username'    /><br />
                    Password: <input type='password'    name='password' /><br />
                    <input type='submit' name='submit' value='Log   in' />
                </form>
             ";
        if(isset($_POST['submit']))
        {
            if($_POST['username'] = "b0ne^" && $_POST['password'] ==    "b0ne^")
            {
                $_SESSION['login'] = "1";
                echo "<meta http-equiv='refresh' content='0' />";
            } else
            {
                echo "Incorrect username/password!";
            }
        }            
    } else
    {
        if($_SESSION['login'] == 1)
        {
            echo "Welcome back, <b>b0ne^</b>!<br />";
            echo "<a href='?page=profile'>Profile</a>":
        }
    }
?>

Evo jos samo jednog primera i to bi bilo to sto se tice sesija. Nekad ce vam trebati da prekinete sesiju, to bi se koristilo na primer kod logout-a. Evo skripte koja ce to uciniti:

<?php
    if(isset($_SESSION))
    {
        session_destroy();
    }
?>

3) Kolacici?
Za razliku od sesija, kod kolacica treba da stavimo koliko ce kolacici trajati. Ako stavimo da kolacic traje jedan dan on ce se posle jednog dana obrisati iz browsera. Kod kolacica
ako se browser restartuje, njihove vrednosti se ne gube vec traju vremenski koliko im je zadatao. Da bismo prikazali kolacice na nekoj stranici direktno kroz browser bez dodataka
samo cemo izvrsiti ovaj javascript kod na toj stranici:

javascript:alert(document.cookie);

Kod zadavanja kolacica imamo vise stvari koje mozemo ili trebamo da zadamo. To su ime, vrednost, rok trajanja, put i domen za kolacic. Najcesce cemo zadati sve vrednosti osim
poslednje(domen). Vreme trajanaja kolacica se izrazava u sekundama. Za zadavanje vrednosti kolacicima koristimo setcookie.

4) Primeri za kolacice
Evo primera gde cemo zadatai jedan kolacic i ispisati njegovu vrednost:

<?php
    if(empty($_COOKIE['username']))
    {
        setcookie("username", "b0ne^", time()+86400, "/");
        echo "<meta http-equiv='refresh' content='0' />";
    }
echo htmlspecialchars($_COOKIE['username']);

?>

Na stranici ce nam zadati kolacic i refreshovati stranicu i zatim ispisati njenu vrednost:

b0ne^

time()+86400 znaci da ce kolacic trajati jedan dan jer jedan dan ima 86400 sekundi, a "/" znaci da ce kolacic vaziti na celom sajtu... Evo prakticnog primera za kolacice:

<?php
    if(!isset($_SESSION))
    {
        session_start();
    }
    if(empty($_COOKIE['username']) && empty($_COOKIE['password']) && empty  ($_SESSION['login']))
    {
        echo "
                <form method='POST'>
                    Username: <input type='text' name='username'    /><br />
                    Password: <input type='password'    name='password' /><br />
                    <input type='checkbox' name='remember'  />&nbsp;Remember me?<br />
                    <input type='submit' name='submit' value='Log   in' />
                </form>
             ";
        if(isset($_POST['submit']))
        {
            if(!empty($_POST['username']) && !empty($_POST['password']))
            {
                $username = htmlspecialchars($_POST['username']);
                $password = htmlspecialchars($_POST['password']);
                if($username == "b0ne^" && $password == "b0ne^")
                {
                    if(isset($_POST['remember']))
                    {
                        $_SESSION['login'] = "b0ne^";
                        setcookie("username", "b0ne^", time () + (60*60*24*356), "/");
                        setcookie("password", md5   ("b0ne^"), time() + (60*60*24*356), "/");
                        echo "<meta http-equiv='refresh'    content='0' />";
                    } else
                    {
                        $_SESSION['login'] = "b0ne^";
                        echo "<meta http-equiv='refresh'    content='0' />";
                    }
                } else
                {
                    echo "Incorrect username/password!";
                }
            } else
        {
                echo "All fileds are required!";
            }
        }
    } else
    {
        if(empty($_SESSION['login']))
        {
            $_SESSION['login'] = $_COOKIE['username'];
        }
        echo "Welcome back, <b>".htmlspecialchars($_SESSION['login'])."</b>!";
    }
?>

U ovom primeru sam pokazao najobicniji nacin logina sa Remember me? opcijom. Ovo bi se sve radilo kroz bazu sa proverom dal postoji korisnik u bazu gde su ti podaci itd....
Evo i primera kako da se obrise kolacic kroz PHP skriptu:

<?php
    setcookie("username", "", time()-3600, "/");
    setcookie("password", "", time()-3600, "/");
?>

Zadajemo kolacic sa praznom vrednosti i vremenom koje je vec isteklo i tako ce se kolacic obrisati. To bi bilo to, ukolik nesto nije jasno slobodno pitajte.

If you don't know who I am, then maybe your best course would be to tread lightly.

Sign In or Register to comment.

Welcome

It looks like you're new here. If you want to get involved, click one of these buttons!

Discussions