所以我有一个PHP函数,用于几个不同的页面。为了减少代码,我调用了functions.php页面。
所以我的索引调用functionX,并在该函数中设置cookie。但我在IF语句中有函数,它似乎设置了cookie,但直到索引上的所有代码都运行....
这是一个示例代码。代码应返回“whatever”,但它返回null
的index.php:
require_once('functions.php');
$cookie = ''; //just doing this to assume the cookie is always null.
if ($cookie == '') {
functionX();
$cookie = $_COOKIE['cookie']['random'];
}
echo ''.$cookie; //returns null.......
的functions.php:
function functionX() {
$randomvar = 'whatever';
setcookie("cookie[random]", $randomvar, time()+60*60*24*30, "/", "www.myweburl.com", 0, true);
}
现在我认为它会在继续之前贯穿整个功能,但它似乎不是那样......
答案 0 :(得分:0)
$_COOKIE
,就像$ _POST和$ _GET一样。如果您在页面加载后启动cookie,它将为空。你能做的是:
$cookie = functionX('random');
function functionX($key) {
if(isset($_COOKIE['cookie'][$key]) {
return $_COOKIE['cookie'][$key];
} else {
$randomvar = 'whatever';
setcookie("cookie[$key]", $randomvar, time()+60*60*24*30, "/", "www.myweburl.com", 0, true);
return $randomvar;
}
}
答案 1 :(得分:0)
如果您查看setcookie() docu,您会注意到句子Once the cookies have been set, they can be accessed on the next page load
和setcookie() defines a cookie to be sent along with the rest of the HTTP headers
,并且由此导致您的设置Cookie未在当前会话中设置。
该功能是打算的。< / p>
你可以做的是修改持有cookie的全局数组,使它们似乎出现在当前会话中。基本上有以下几种方式:
function functionX() {
$randomvar = 'whatever';
setcookie("cookie[random]", $randomvar, time()+60*60*24*30, "/", "www.myweburl.com", 0, true);
$_COOKIE['cookie']['random'] = $randomvar;
}