játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5462
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2524

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2192
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
PHP Tutorial 2. Rész: Cookie-k 2006.05.22 13:34


PHP Tutorial 2. Rész: Cookie-k

A cookie-k segítségével változókat tárolhatunk el kliensoldalon, azaz a felhasználónál. A cookie-knak van érvényességi idejük, ennek az időnek a lejárta után a cookie törlődik. A php segítségével könnyen kezelhetjük a cookie-kat.
Cookie-t létrehozni a setcookie paranccsal lehet. (A header paranccsal is lehet, de azzal kicsit bonyolultabb.)

Kiolvasni 3 féle képpen lehet:
- $_COOKIE[cookieneve]
- $HTTP_COOKIE_VARS[cookieneve]
- $cookieneve (csak ha a register_globals be van kapcsolva a php.ini-ben)

Cookie-t úgy lehet törölni, hogy a setcookie()-val érték nélkül kell beállítani a törölni kívánt cookiet. Amennyiben nem adunk meg érvényességi időt a cookie létrehozásakor, akkor a cookie a böngésző bezárásáig lesz érvényes.

Egy-két példa:

pelda1.php:
Kód:
<?php
setcookie("cookieneve","cookieértéke");
echo($_COOKIE[cookieneve]); //kiírja, hogy cookieértéke
?>

torol.php:
Kód:
<?php
setcookie("cookieneve"); //törli a cookieneve nevű cookiet
?>

beallit.php:
Kód:
<?php
setcookie("cookieneve","cookieértéke",time()+60); //60 másodpercig lesz érvényes a létrehozott cookie
?>

kiolvas.php:
Kód:
<?php
echo($_COOKIE[cookieneve]); //kiírja, hogy cookieértéke, ha nem telt el több mint 60 másodperc a beallit.php meghívása óta
?>

Az érvényességi időt UNIX timestamp formátumban kell megadni. A UNIX timestamp az 1970 óta eltelt másodpercek száma. A jelenlegi időnek megfelelő timestampet a time() függvénnyel kérhetjük le, a pédában hozzáadunk 60-at a timestamphez, azaz a cookie a jelenlegi idő+60 másodpercig lesz érvényes.

Egy névmegjegyzős példa

index.php:
Kód:
<?php
if($_COOKIE[nev]=="") //ha a nev nevű cookie nem létezik
{
echo("<form action=megjegyez.php method=POST>Add meg a neved: <input name=beirtnev><input type=submit value=OK></form>"); //kiiratunk egy inputboxot, amibe be lehet írni a neved
}
else //ha pedig létezik a cookie, akkor az alábbi hajtódik végre
{
echo("Szia $_COOKIE[nev]!<br><a href=felejt.php>Felejtsd el a nevem!</a>");
}
?>


megjegyez.php:
Kód:
<?php
setcookie("nev",$_POST[beirtnev]); //beállítjuk a cookie-t
echo("<a href=index.php>INDEX</a>"); //kirakunk egy linket, ami visszavisz az index-php-re
?>


felejt.php:
Kód:
<?php
setcookie("nev"); //töröljük a cookie-t
echo("<a href=index.php>INDEX</a>"); //kirakunk egy linket, ami visszavisz az index-php-re
?>


A setcookie() parancsnak lehet több paramétert is adni: setcookie( "cookieneve", "érték", lejárat, "útvonal, ahol a tartományon belül érvényes",
"tartomány", 0 ); a nulla azt jelenti, hogy nem kell biztonságos kapcsolat a cookie működéséhez, de ezeket a további paramétereket most nem magyarázom el részletesen.

Egyelőre ennyi, mert többre most nem volt időm. Folytatás hamarosan.

Értékelés: 10.00

Új hozzászólás
Asylum          2008.04.29 04:27
sessiont használj ne sütit
kivéve ha meggyes
Dodo55          2006.05.27 09:35
De nem php
mogul          2006.05.26 03:12
mert az is süti?
kicsy          2006.05.25 11:29
Ez egy javascript, az írás pedig phpről szól. Ennyi erővel bevághatnám ide a nagyi muffin-receptjét
mogul          2006.05.25 09:43
hozzászóltam, ember.

ez egy általánosan használható süti szkript, nem fért egybe. html-s javascriptben használtam, tértem át php-re és az a helyzet h abban nem is kell? kivehetem a cookies.js-t meghívó sort, hmm
kicsy          2006.05.24 13:30
Te mit csinálsz ember?
mogul          2006.05.24 01:11
hát ez jó a fejek helyett ) zárójel
mogul          2006.05.24 01:09
/**
* Gets the value of the specified cookie.
*
* name Name of the desired cookie.
*
* Returns a string containing value of specified cookie,
* or null if cookie does not exist.
*/
function getCookie(name)
{
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1)
{
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else
{
begin += 2;
}
var end = document.cookie.indexOf(";", begin);
if (end == -1)
{
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
}

folyt...
/**
* Deletes the specified cookie.
*
* name name of the cookie
* [path] path of the cookie (must be same as path used to create cookie)
* [domain] domain of the cookie (must be same as domain used to create cookie)
*/
function deleteCookie(name, path, domain)
{
if (getCookie(name))
{
document.cookie = name + "=" +
((path) ? "; path=" + path : "" +
((domain) ? "; domain=" + domain : "" +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
}
..........
ezt kényelmesen beleteheted egy javascript.js-be
head szekcióba:
<script type="text/javascript" src="cookies.js"></script>
aztán mondjuk
<a href="#" onclick='setCookie("name", "Jason Davies"'>Set Cookie!</a>
mogul          2006.05.24 01:08
cookie = süti

egy régi cikk, már nincs a neten:

/**
* Sets a Cookie with the given name and value.
*
* name Name of the cookie
* value Value of the cookie
* [expires] Expiration date of the cookie (default: end of current session)
* [path] Path where the cookie is valid (default: path of calling document)
* [domain] Domain where the cookie is valid
* (default: domain of calling document)
* [secure] Boolean value indicating if the cookie transmission requires a
* secure transmission
*/
function setCookie(name, value, expires, path, domain, secure)
{
document.cookie= name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "" +
((path) ? "; path=" + path : "" +
((domain) ? "; domain=" + domain : "" +
((secure) ? "; secure" : "";
}

folyt...