[ neb @ 30.01.2011. 21:27 ] @
Da li neko ko ima vise iskustva sa PHP script jezikom moze da kaze kako da resim problem da nakon sto postavim jedan cookie u web klijent odmah zatim iscitam vrednost tacno tog istog cookie-a?

Dole naveden kod radi normalno medjutim nakon sto se isti kod izvrsi desava se jedan problem koji cu pokusati da opisem:

Code:

<?php

$value1 = rand();

// send a simple cookie
setcookie("TestCookie",$value1);

// Print individual cookies
$value2=$_COOKIE["TestCookie"];
echo $value2;
echo "<br />";

if ($value1==$value2)
{
echo "<br />";
echo "equal";
}
?>



Dole naveden kod generise random broj i vrednost istog broja postavlja u promenljivu.

Code:

$value1 = rand();


Kod dole naveden postavlja cookie i u njega upisuje vrednost datog random broja u web client.

Code:

// send a simple cookie
setcookie("TestCookie",$value1);


Kod dole bi ocekivano trebao da nakon sto je dati cookie vec postavljen u web client da pronadje isti cookie u web client-u i istu vrednost istog cookie-a prebaci u promenljivu '$value2' a zatim da vrednost iste promenljive ispise u prozoru web client-a medjutim ovo se ne desava nakon prvog poziva istog php link-a vec tek nakon drugog poziva?

Code:

// Print individual cookies
$value2=$_COOKIE["TestCookie"];
echo $value2;
echo "<br />";


Kod ispod bi trebao da ispita jednakost promenljivih '$value1' i '$value2' i da nakon sto se utvrdi da su vrednosti obeju promenljivih jednake ispise rec "equal" u prozoru web client-a.

Code:

if ($value1==$value2)
{
echo "<br />";
echo "equal";
}


Problem nastaje kada prvi put pozovem link ka datom php fajlu i isti PHP kod pocne da se izvrsava.

Kada prvi put pozovem kod u PHP fajlu i proverim cookies u svom web klijentu (Mozlla Firefox) dobijem izlaz da je isti cookie postavljen u isti web klijent.

Nakon toga odmah zelim da isti cookie iscitam iz istog web client-a i da vrednost upisem promenljivu medjutim tu nastaje problem.

Code:

// Print individual cookies
$value2=$_COOKIE["TestCookie"];
echo $value2;
echo "<br />";


Nakon sto se izvrsi isti kod koji sam ponovo naveo gore promenljiva '$_COOKIE["TestCookie"];' ne prihvata trazenu vrednost iz istog trazenog cookie-a vec vredost same promenljive '$value2' ostaje prazna.

Ista gore navedena procedura pocinje da se odigrava normalno tek nakon sto po drugi put pozovem isti link ka istom php fajlu.

Medjutim tu nastaje drugi ocekivani problem koji se manifestuje u tome sto sam random broj biva ponovo generisan i samim tim nejednak sa predhodnim brojem.

Ovo se desava usled toga sto se ceo php kod izvrsava ponovo a sa njim zajedno i sekvenca koda

Code:

$value1 = rand();


Uslov dole naveden se nikada ne ispunjava kao tacan.

Code:

if ($value1==$value2)
{
echo "<br />";
echo "equal";
}


Da li bi neko mogao da ogovori na ovo pitanje koje glasi zasto nakon sto se prvi put pozove link ka php fajlu i dati cookie bude postavljen u web klijent isti ne biva odmah pronadjen u istom web klijentu nego se ovo desava tek nakon poziva istog linka po drugi put.

Dole sam ponovo naveo linije koda kod kojih mislim da nastaje ovaj problem?

Code:

...
// send a simple cookie
setcookie("TestCookie",$value1);

// Print individual cookies
$value2=$_COOKIE["TestCookie"];
echo $value2;
echo "<br />";
...

[ maksvel @ 30.01.2011. 21:54 ] @
Pri prvom pozivu setcookie(), server postavlja kolačić kod klijenta, ali nema niz $COOKIE.
Taj niz će dobiti tek kada pri novom pozivu stranice klijent u zahtevu pošalje svoj kolačić.

Citat:

Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE or $HTTP_COOKIE_VARS arrays.

http://php.net/manual/en/function.setcookie.php
[ neb @ 30.01.2011. 22:12 ] @
Kako da resim ovaj problem?

Takodje cu prouciti link koji si mi poslao.
[ maksvel @ 30.01.2011. 22:48 ] @
Pitanje je šta pokušavaš..
Nije zgoreg proveriti da li je kolačić postavljen, pa onda vršiti postavljanje.
Code:

if (isset($_COOKIE["TestCookie"]))
[ neb @ 30.01.2011. 23:02 ] @
Videcu pa cu javiti ako bude bilo dalje problema.