BluePink BluePink
XHost
Oferim servicii de instalare, configurare si monitorizare servere linux (router, firewall, dns, web, email, baze de date, aplicatii, server de backup, domain controller, share de retea) de la 50 eur / instalare. Pentru detalii accesati site-ul BluePink.
The future is now
       Cookie in PHP
           
      Ce sunt cookie si de ce avem nevoie de ele ?

Cookie reprezinta, pe scurt, informatie generata de server si stocata in computerul client.
Cookie este un mecanism de comunicare (bidirectional) client - server. Poate fi utilizat pentru personalizarea paginilor, statistici, respectiv o varietate de alte motive.

Utilizarea cookie in PHP este relativ simpla. Pentru inceput vom seta un cookie folosind functia SetCookie. Cookie sunt parte a header-ului HTTP, deci functia SetCookie trebuie apelata inainte de a trimite orice altceva catre browser (restrictie care se aplica si functiei Header). Orice cookie trimis de catre client serverului va fi convertit automat intr-o variabila PHP. Astfel, daca ati setat un cookie SetCookie("variabila","Xprim.ro"), PHP va crea automat o variabila $variabila cu valoarea "Xprim.ro".

Functia SetCookie are urmatoarea sintaxa:

SetCookie(string nume, string valoare, int expira, cale, domeniu, int secure);

unde:

expira - perioada de valabilitate in formatul returnat de functiile time(), respectiv mktime()
cale - este directorul aflat pe server pentru care este acel cookie
domeniu - domeniul pentru care cookie poate fi utilizat. In mod standard, este domeniul in care se afla pagina ceruta.
secure - daca are valoarea "1", indica ca transmiterea respectivului cookie se va face printr-o conexiune securizata (https).

Cookie va deveni vizibil la urmatoarea incarcare a paginii pentru care a fost setat. Cererile multiple de setare cookie vor fi executate in ordine inversa (PHP3). In PHP4, cererile multiple de setare cookie vor fi executate in ordinea aparitiei lor. Astfel, daca incercati sa stergeti un cookie inainte de a insera altul, veti pune inserarea inainte de stergere.

Pentru exemplificare vom presupune existenta unui site care impune autentificare. Utilizatorii inregistrati vor fi automat recunoscuti, iar cei care nu sunt inregistrati vor fi redirectionati catre o pagina de inregistrare.

Vom crea baza de date cu numele "utilizatori":

mysql> create database utilizatori;
Query OK, 1 row affected (0.05 sec)

mysql> use utilizatori;
Database changed

mysql> create table informatii (nume varchar(25), prenume varchar(50), email varchar(35), counter varchar(3));
Query OK, 0 rows affected (0.04 sec)

Acum vom scrie o portiune de cod pentru a verifica existenta cookie:

<? //verificare existenta cookie
if (isset($informatii))
   {$temp = explode("&", $informatii);
    $Nume=$info[0];
    $Prenume=$info[1];
    $Email=$info[2];
    $Counter=$info[3];
    $Counter++;

    $CookieVar=$Nume.'&'.$Prenume.'&'.$Email.'&'.$Counter;
    SetCookie ("informatii",$CookieVar, time()+3600);
    //am scris noul cookie, care va expira peste o ora
    // urmeaza output in browser dupa ce am setat cookie
   echo('<html>
             <head>
                <title>Xprim.ro - web development portal</title>
             </head>
             <body>
               <p>Bine ai venit, '.$Nume.' '.$Prenume.', aceasta este vizita:
               '.$Counter.'</p>
             <p>Adresa ta de email este: '.$Email.'</p>
             <body>
          <html>');
    // update bd
    $db = 'utilizatori';
    $utilizator = ''; // conform setarilor serverului dvs.
    $parola = ''; // conform setarilor serverului dvs.
    $link = mysql_connect('localhost', $utilizator, $parola) or die("Conectare
     nereusita");
    $status = mysql_select_db($db,$link);
    $cerere = 'update informatii set counter="'.$Counter.'" where
    nume="'.$Nume.'" and prenume="'.$Prenume.'" and email="'.$Email.'"';
    $rezultat = mysql_query($cerere, $link) or die("Cerere invalida");
    // sfarsit update bd

} else { //sectiune no cookie
    echo('<html>
      <head>
        <title>Xprim.ro - web development portal</title>
      </head>
      <body>
        <a href="utilizator_nou.php">Clic aici pentru inregistrare</a>
      </body>
    </html>');
} //sfarsit sectiune no cookie ?>

Pagina utilizator_nou.php va contine un form de inregistrare:

    <html>
     <head>
        <title>Inregistrare</title>
     </head>
     <body>
      <h1>Utilizator nou</h1>
      <form method="post" action="inscriere.php">
      <table width=90% align=center>
       <tr>
         <td>Nume:</td>
         <td><input type=text name='Nume' size=20 maxlength=20></td>
       </tr>
       <tr>
         <td>Prenume:</td>
         <td><input type=text name='Prenume' size=40 maxlength=40></td>
       </tr>
       <tr>
         <td>Adresa Email:</td>
         <td><input type=text name='Email' size=40 maxlength=40></td>
       </tr>
       <tr>
         <td>&nbsp;</td>
         <td><input type=submit value="Inregistrare"></td>
       </tr>
      </table>
      </form>
     </body>
    </html>

Pagina inscriere.php va realiza verificarea (sumara) a campurilor din form si le va insera in baza de date, dupa ce in prealabil se va verifica existenta unui utilizator cu acceasi adresa de email.

<? if ($Nume and $Prenume and $Email)
    {$db = 'utilizatori';
    $utilizator = ''; // conform setarilor serverului dvs.
    $parola = ''; // conform setarilor serverului dvs.
    $link = mysql_connect('localhost', $utilizator, $parola) or die("Conectare
    nereusita");
    $status = mysql_select_db($db,$link);
    $cerere='select * from informatii where email="'.$Email.'";
    $rezultat = mysql_query($cerere, $link);
    $r=mysql_fetch_array($rezultat);
    $Counter=$r['counter'];


if (isset($Counter))
    {$CookieVar=$Nume.'&'.$Prenume.'&'.$Email.'&'.$Counter;
    SetCookie ("informatii",$CookieVar, time()+3600);
    echo('<p>Adresa '.$Email.' exista deja in baza noastra de date.</p>';
    echo('<p><a href="index.php'>Inapoi la index');
} else {
    $Counter = '1';
    $cerere = 'insert into informatii (nume, prenume, email, counter) values
     ("'.$Nume.'","'.$Prenume.'","'.$Email.'","'.$Counter.'")';
    $rezultat = mysql_query($cerere, $link);
    $CookieVar=$Nume.'&'.$Prenume.'&'.$Email.'&'.$Counter;
    SetCookie ("informatii",$CookieVar, time()+3600);
  
    echo('Va multumim pentru inregistrare.');
    }
} else {
    echo('Va rugam sa completati toate campurile');
}
?>
Tutoriale PHP Part VI