Főol Visszalép

PHP COOKIE (süti)

Oldalakon, általam elhelyezett adathalászat, vagy adathalász cookie nincs.



COOKIE müködésének tesztelésére, használjuk a következő linkeket.


Alapismeretek a Php COOKIE, azaz sütiről.

Első belépéskor, nincs értékelhető adat (érték), mivel ekkor jön létre a cookie.


Mi az a COOKIE?
Hétköznapi:
Egy kis édes sütemény, általában kerek, lapos, és ropogós.
Finomabb kombinációja, krémes hab és ropogós csokis süti.

Számítástechnikai:
Egy csomag által küldött adat, internetes szerveren, egy böngészőhöz.
Minden egyes alkalommal, amikor a böngésző visszatér a létrehozással azonos szerverre, hozzáférünk és felhasználhatjuk a felhasználó azonosítására, vagy nyomon követni szerverhez való hozzáférését.
"Néhány kiszolgáló cookie-k segítségével követi nyomon, felhasználók tevékenységét, és néhány használja őket, hogy kideritse felhasználó személyazonosságát."
A cookie egy adathordozó fantázianeve, mely a háttérben fut, és mindenki tetszésének megfelelő ékezet nélküli karakterekkel is helyettesíthet. (Pl.: CSOKI)
Létrehozásához, kétféle függvényt alkalmazunk: setcookie() függvényt vagy setrawcookie() függvényt.
A fantázianévvel létrehozott cookie nevét és adatát, a $_COOKIE tömb tárolja.
Lekérdezésnél úgy járunk el, mint a normál tömböknél $_COOKIE["fantázianév"]


Ha elküldjük a cookie-t, értéke automatikusan URL-be lesz kódolva, (és automatikusan dekódolódik, amikor visszakapjuk.)
Ha nem akarjuk, hogy automatikusan URL-be legyen kódolva, akkor a setrawcookie () függvényt kel használni.


COOKIE (süti) létrehozása.

Program fájl elején hozzuk létre, mert nem előzheti meg, html kimenet.

Meghívjuk a setcookie( ) vagy setrawcookie( ) függvényt, melyekben a következő adatokat adhatjuk meg, vesszővel elválasztva, és a következő sorrendben:

  1. COOKIE neve (name). Kötelező megadni!
    • Tetszőleges általunk meghatározott ékezet nélküli egyedi cookie azonosító, újabb cookie ezzel a névvel nem rendelkezhet.

  2. COOKIE értéke (value), milyen adatot tároljon. Kötelező megadni!

  3. COOKIE lejárati ideje (expire). A cookie mennyi ideig tárolódjon, azaz legyen érvényes. Nem kötelező megadni, üresen is hagyhatjuk!
    • Itt használhatjuk a time() függvényt, mellyel lekérdezhetjük a pillanatnyi időt és ehhez hozzáadva írjuk, hogy meddig szeretnénk életben tartani a sütit.
    • Ez a paraméter nincs beállítva, a cookie lejár, ha vége a munkamenetnek. (Ha a böngésző, bezárul).

  4. COOKIE elérési útja (path) a szerveren. Nem kötelező megadni, üresen is hagyhatjuk!
    • Ha nem határozzuk meg, akkor az alapértelmezett útvonal, az aktuális könyvtár, melyben a cookie-t létrehoztuk.
    • Ha így határozzuk meg, "/" akkor a cookie elérhető lesz, minden mappánkban megtalálható php fájlunkban.
    • Ha így határozzuk meg, "/ teszt /" , a cookie csak a teszt nevű könyvtárban és minden teszt nevű alkönyvtárában lesz elérhető.

  5. COOKIE tartomány neve (domain név). Nem kötelező megadni, üresen is hagyhatjuk!
    • Mely tartomány lesz jogosult, a süti fogadására, pl.: www.ezenoldalam.hu.
    • Ha azt szeretnénk, hogy csak a létrehozó férjen hozzá, használjuk ezt a meghatározást: $_SERVER['SERVER_NAME'].
    • Ahhoz, hogy a cookie rendelkezésre álljon minden aldomainnál a sajatom.com címen, akkor így állítsuk be. "sajatom.com".

  6. COOKIE kapcsolati biztonság (secure). Nem kötelező megadni, üresen is hagyhatjuk!
    • Meghatározhatjuk, hogy a cookie csak akkor legyen továbbítható, ha biztonságos a HTTPS kapcsolat.
    • Az alapértelmezett érték FALSE (hamis).
    • Ha értéke TRUE (igaz), cookie-t csak akkor lehet beállítani, ha létezik a biztonságos kapcsolat.
    • Ha értéke = 0-val, a nem biztonságos kapcsolat is engedélyezett.

Példák a cookie, azaz, sütik létrehozására, törlésére:

  1. COOKIE változót létrehozhatunk úgy is, hogy a nevén kívül nem határozunk meg semmit.
    Ebben az esetben, egy későbbi alkalommal, vagy egy adott esemény bekövetkezését követően kapja meg, a szükséges értékeket.
    • setcookie("fekete_rigo");
  2. Kezdésnek ajánlott minimun ennyi meghatározás. (név, érték)
    • setcookie("fekete_rigo", "Jól tud fütyülni");
  3. Lejárati idő meghatározással. (név, érték, időbélyeg)
    • setcookie("fekete_rigo", "Jól tud fütyülni", time()+60);
  4. Teljes meghatározása. (név, érték, lejárati idő, elérhetőségének címe, nem biztonságos kapcsolat engedélyezése)
    • setcookie("felhasznalo", "Zsuzsika", time()+60, "/", "http://www.weboldalam.hu", 0);
  5. Csak a létrehozó férjen hozzá, akkor így:
    • $tartomany=$_SERVER['SERVER_NAME'];
      setcookie("felhasznalo", "Zsuzsika", time()+60, "/", "$tartomany", 0);
  6. A sütinek valami értelme is legyen, nem előre bevitt adatokkal kell a sütit megtölteni. (Pédául: Űrlapról érkező adattal. A $nev változónak adandó értéket kell, egy form segítségével elküldeni a sütinek.)
    • $nev=$_POST['latogato_neve'];
      setcookie("felhasznalo", $nev, time()+60);
  7. A session beiktatásával, egy felhasználó nyomon követésére is használhatjuk, amíg adott webhelyen böngészik.
    • setcookie("session_id", "12345", 0);
    A session olyan süti, ami csak addig él, amíg a böngésző meg van nyitva.
    Ezt a sütit, 0 élettartamra történő beállításával érhetjük el.
  8. Süti törlése. Sütinek új értéket, azaz, üres értéket adunk, lejárt dátummal:
    • setcookie("felhasználó", "", time()-60,"/", "$tartomany", 0);
  9. Hivatlan COOKIE váltózókat a böngésző ablakából kereshetjük vissza, és törölhetjük.
    Példa Mozilla Firefox böngészőben:
    Eszközök 
    		- Beállítások 
    					- Adatvédelem (eltávolítani az egyes sütiket)
    							- Süti neve alapján is kereshetünk süti által tárolt adatot, és törölhetjük.
    

COOKIE változót létrehozhatunk úgy is, hogy a nevén kívül nem határozunk meg semmit.
Ebben az esetben, egy későbbi alkalommal, vagy egy adott esemény bekövetkezését követően kapja meg, a szükséges értékeket.


 

COOKIE változók lekérdezése.

Olyan COOKIE változók lekérdezése, melyek nem léteznek, azaz, még nem jöttek létre,
a következő lekérdezési formátumban, hibát eredményeznek.

    <?php   echo $_COOKIE [ "neve" ];  ?>

Hibajelzés elkerülése:
Minden COOKIE változó lekérdezése előtt, meg kell győződni annak létezéséről, és ha létezik, akkor kérdezhetjük le, vagy felhasználhatjuk további műveletekre.
Hibajelzés elkerülésére egy kivétel van, ha a print_r( ); függvénnyel kérdezzük le.
Ebben az esetben, csak létezésükről győződhetünk meg, de további műveletek elvégzésére, nem alkalmas.

  <?php
     echo'<pre>';
         print_r($_COOKIE);
     echo'</pre>';
   ?>
Szabályos lekérdezések, melyekkel nem csak kiíratást, de további műveleteket is végezhetünk:

<?php if(isset( $_COOKIE [ "elso" ])) {
echo $_COOKIE [ "elso" ];}
echo '<br />' ;

if(isset( $_COOKIE [ "masodik" ])){
echo $_COOKIE [ "masodik" ]; }
echo '<br />' ;

if(isset( $_COOKIE [ "harmadik" ])){
echo $_COOKIE [ "harmadik" ]; }
?>

Állítsuk be a sütiket, egyszerű array tömb formátumba.

Példa:

<?Php
// COOKIE változók létrehozása előtt, nem lehet html kimenet.
 
 setcookie("tanulo01[Kodja]","243c325f");
 setcookie("tanulo01[TeljesNeve]","Mester Cookie");
 setcookie("tanulo01[cime]","Cookie Süti ú 31");
 setcookie("tanulo01[Type]","Programozó");

//Lekérdezés a fájlban, tetszőleges helyen lehetséges. 
// (html elemek között elhelyezett php szkriptben is.)

// COOKIE változók lekérdezése.  
  if (isset ($_COOKIE ['tanulo01'])) 
       {
             foreach ($_COOKIE ['tanulo01'] as $kulcs => $ertek) 
                 {
                    echo '01.Tanuló '.$kulcs.': '.$ertek.'<br />';
                 }
       }
?>


Lekérdezés eredménye: 01.Tanuló Kodja: 243c325f 01.Tanuló TeljesNeve: Mester Cookie 01.Tanuló cime: Cookie Süti ú 31 01.Tanuló Type: Programozó

 


 

Összefoglaló.
Mit tudunk a cookie változó létrehozásáról?

  1. A cookie változót az előtt kell létrehozni, mielőtt minden más <html> kimenetet kezdeményeznénk.
  2. Létrehozásához, kétféle függvényt alkalmazunk: setcookie() függvényt vagy setrawcookie() függvényt.
  3. Mindegy, melyik függvénnyel hozzuk létre, a $_COOKIE szuperglobális tömb tárolja.
  4. A cookie változót a fájl tetszőleges területén, akár a <html> jelölőelemek között elhelyezett szkriptben is, lekérdezhetjük.
  5. Létrehozásakor, a cookie (süti) nevén kívül, semmi más paramétert sem kötelező, megadni.
  6. A cookie létrehozható egyszerű változóként, vagy tömb formátumban is.
  7. Cookie változók a domain-hez kötödnek, és kizárólag saját tartalmuk tekintetében képesek, adatok továbbítására.
  8. Cookie változók visszatérési értéke, a létrehozásuk helyén, vagy az előre meghatározott területeken kérdezhető le.
  9. Nem határozunk meg cookie változónak lejárati időt, a munkamenet végén, vagy ha a böngészőt bezártuk, ideje lejárt.
  10. A felhasználó saját internet böngészőjében letilthatja vagy engedélyezheti a cookie-k telepítését számítógépére.

  11. Szintaxisa: setcookie(name,value,expire,path,domain,secure)
    • name: A cookie egyedi azonosítója, azaz, a neve. (Például: 'fekete_rigo' vagy 'felhasznalo' vagy sorszámozzuk 'A01' 'A02' stb.)
    • value: A cookie-ben tárolandó érték. (Pédául: Szó vagy szöveg=Jól tud fütyülni. Vagy számok, időpontok= 1814-04-23)
      Értéke, a name, azaz, neve alapján (Például: 'fekete_rigo') érhető el, így: $_COOKIE ['fekete_rigo'] vagy $HTTP_COOKIE_VARS ['fekete_rigo'].
    • expire: A cookie lejárati ideje, melyet időbélyeg formátumban határozunk meg.
      Használjuk a time() függvényt, mellyel lekérdezhetjük a pillanatnyi időt és ehhez hozzáadva írjuk, hogy meddig szeretnénk életben tartani a sütit.
      Példák a cookie lejárati idejére:
      1 perc = time()+60
      30 nap = time () 3600 * 24 * 30
      Ha ez a paraméter nincs beállítva, a cookie lejár, ha vége a munkamenetnek (ha a böngésző bezárul).
    • path: Azon mappa/fájl útvonala, mely az elérhetőség helyét jeleníti meg.
      Ha "/"-t határozunk meg, akkor a megadott webhely, minden oldalán elérhető a sütink.
      Ha az értéke "/ test /", akkor a cookie csak a teszt könyvtárban, és minden teszt alkönyvtárában lesz elérhető.
      Alapértelmezett értéke, az aktuális könyvtár, melyben a cookie-t létrehozták.
    • domain: A cookie mely domain névvel jelölt területen legyen aktív, azaz, mely tartomány lesz jogosult a süti fogadására.
      Például:
      Webhely cím esetén így: www.valami.hu.
      Csak a létrehozó férjen hozzá, akkor így: $_SERVER['SERVER_NAME'].
    • secure: Egy egész szám.
      Azt mutatja, hogy a süti milyen kapcsolaton keresztül közlekedhet.
      Ha 0-val jelöljük, akkor a nem biztonságos kapcsolatot is engedélyezett. meghatároznunk.

 


 

ParameterLeírás.
nameKötelező meghatározni.
Megadja a cookie nevét.
A név, értelemszerűen a használt cookie neve, például "felhasználó".
valueKötelező meghatározni.
Megadja a cookie értékét.
Az érték, ennek a nevű cookie-nak az értéke, például "Valaki", de általában egy kis szöveges fájl.
expireNem kötelező meghatározni.
Meghatározza a cookie lejárati idejét.

Az időbélyeg azt mondja meg, hogy a cookie mennyi ideig tárolódjon, azaz legyen érvényes.
Itt használhatjuk a time() függvényt, mellyel lekérdezhetjük a pillanatnyi időt és ehhez hozzáadva írjuk, hogy meddig szeretnénk életben tartani a sütit.
Például: time()+60 ez 1 percet fog eredményezni.
A cookie lejárati edejét 30 napra állítja: time()+3600*24*30
Ha ez a paraméter nincs beállítva, a cookie lejár, amint vége a munkamenetnek (ha a böngésző bezárul).
pathNem kötelező meghatározni.
Megadja a szerver elérési útját, ahol a cookie felhasználható.
Ha az értéke "/" A cookie elérhető lesz a saját webhelyünkön, vagy a megadott webhely egész területén.
Ha az értéke "/ teszt /", a cookie elérhető minden teszt nevű könyvtárban és minden teszt nevű alkönyvtárban.
Alapértelmezett érték, azon aktuális könyvtárra mutat, melyben a cookie-t létrehoztuk.
domainNem kötelező meghatározni.
Megadja a cookie domain nevét.
Megmutatja, hogy mely tartomány lesz jogosult a süti fogadására, például www.weboldalam_címe.hu.
Ha azt szeretnénk, hogy csak a létrehozó SERVER férjen hozzá, használjuk ezt: $_SERVER['SERVER_NAME'].
A cookie rendelkezésre álljon a bemutato.com minden aldomainjánál, akkor így állítsuk be: "bemutato.com".
secureNem kötelező meghatározni.
Meghatározza, hogy a cookie csak akkor továbbítható, ha biztonságos a HTTPS kapcsolat.
Az egész szám azt mutatja, hogy a süti milyen kapcsolaton keresztül közlekedhet.
0-val, a nem biztonságos kapcsolat is engedélyezett.
TRUE azt jelzi, hogy a cookie-t csak akkor lehet beállítani, ha biztonságos kapcsolat létezik.
Alapértelmezett beállítás FALSE (HAMIS).