Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP: Proč nefungují cookies ve funkci ?

Nefungují mi cookies ve funkci, ale mimo funkci ano.
1.) Prohlížeč má cookies povoleny
2.) Ano, neposílám nic na výstup, protože jinak by mi to hlásilo: Cannot modify header information - headers already sent... ]:(

Takže co funguje?

<?php
setcookie ("TestCookie", " Treba tento řetezec si uložím ",time()+3600);
echo $HTTP_COOKIE_VARS["TestCookie"];
// Při dalším navštívení stránky se korektně dozvím řetezec.
?>

Takže co nefunguje ?

<?php
function nejakaFunkce()
{
setcookie ("TestCookie", " Treba tento řetezec si uložím ",time()+3600);
echo $HTTP_COOKIE_VARS["TestCookie"];
// donekonecna vyhazuje:  Notice: Undefined variable: HTTP_COOKIE_VARS    ]:( :-?
}
nejakaFunkce();

?>

Už je hodně hodin a tak mi to nemyslí. Pravděpodobně to má co společného s globální versus lokální proměnnou.
Děkuji za vysvětlení 3-[

Předmět Autor Datum
Takže řešení je: <?php function nejakaFunkce() { setcookie ("TestCookie", " Treba tento řetezec si…
Flash_Gordon 31.03.2006 01:26
Flash_Gordon
a nie je to nahodou tym, ze by si mal pouzit globalnu premennu: $_COOKIE. $HTTP_COOKIE_VARS sa pouzi…
IgorK 31.03.2006 01:44
IgorK
Last updated: Sun, 20 Feb 2005 http://mirrors.inway.cz/manual/cs/function.setcooki e.php Oni to tam…
Flash_Gordon 31.03.2006 01:52
Flash_Gordon
toto je v najnovsom en. manualy priamo z php.net: HTTP Cookies: $_COOKIE comment: Introduced in 4.1.… poslední
IgorK 31.03.2006 02:00
IgorK

Takže řešení je:

<?php
function nejakaFunkce()
{
setcookie ("TestCookie", " Treba tento řetezec si uložím ",time()+3600);
global $HTTP_COOKIE_VARS;   // Toto je řešení
echo $HTTP_COOKIE_VARS["TestCookie"];
// Při dalším navštívení stránky se korektně dozvím řetezec.
}
nejakaFunkce();

?>

Jestli chcete tak to smažte. Je na mě asi fakt pozdě. :-[

toto je v najnovsom en. manualy priamo z php.net:
HTTP Cookies: $_COOKIE
comment: Introduced in 4.1.0. In earlier versions, use $HTTP_COOKIE_VARS.

An associative array of variables passed to the current script via HTTP cookies. Automatically global in any scope.

This is a 'superglobal', or automatic global, variable. This simply means that it is available in all scopes throughout a script. You don't need to do a global $_COOKIE; to access it within functions or methods, as you do with $HTTP_COOKIE_VARS.

Zpět do poradny Odpovědět na původní otázku Nahoru