【发布时间】:2017-06-14 19:11:44
【问题描述】:
我第一次尝试设置 cookie。我一直在关注 W3 学校的文档,但它似乎对我不起作用。
这是我的代码(本示例省略了一些命名):
$namenospace = 'thisnameexample';
function someSetup($somename){
$nameofcookie = $somename . '_some_value';
if(!isset($_COOKIE[$nameofcookie])) {
$someValue = rand(1, getrandmax());
$cookielastsfor = time() + (86400 * 30);
setcookie($nameofcookie, $someValue, $cookielastsfor, "/");
}
else {
$someValue = $_COOKIE[$nameofcookie];
};
return $someValue;
};
$setSomeValue = someSetup($namenospace);
如您所见,我正在尝试检查是否设置了 cookie,如果是,则获取值并使用它,否则,设置 cookie,然后返回值。
由于某种原因,这个 setcookie() 函数不起作用。有人对此有任何见解吗?
如果相关的话,可能值得注意的是这是一个 wordpress 网站?
谢谢!
编辑:已根据 cmets 中突出显示的范围问题进行了更新,但仍无法按预期工作。
再次编辑:绝对不是重复的。我和我的团队发现了这个问题,并希望将此未标记为重复,以便可以给出答案!
【问题讨论】:
-
1.你不要打电话给
someSetup() -
@RiggsFolly - 现在已经更新,我忘了更新那里的函数名称,我已经更改了问题的代码
-
2.变量 SCOPE, Scope, scope........
$namenospace在someSetup()函数中是不可见的。如果您想在函数中使用它,请将其作为参数传递 -
$namenospace超出了someSetup的范围。你需要使用function someSetup() use ($namenospace) { -
@RiggsFolly 我不认为这是重复的,虽然范围是一个问题,但它不会停止 cookie 的创建,名称应该是
_some_value。请考虑重新打开它。