我在同一页面上设置cookie时遇到问题.我在我的网站上使用了cookie并且工作正常,我倾向于将php设置为单独的文件.现在,我在同一页面上设置了一个cookie,但它似乎不起作用.
$expire = time()+5;
setcookie("rb_vote", 1, $expire);
Run Code Online (Sandbox Code Playgroud)
然后检查它是否已设置
if(isset($_COOKIE["rb_vote"])) {
echo "IS SET";}
else {
echo "IS NOT SET"; }
Run Code Online (Sandbox Code Playgroud)
它总是说没有设定.我尝试在页面加载中执行此操作但仍然无法正常工作.
Pek*_*ica 10
请参阅setcookie()手册(强调我的):
设置cookie后,可以使用$ _COOKIE或$ HTTP_COOKIE_VARS数组在下一页加载时访问它们.注意,$ _COOKIE等超级全局变量在PHP 4.1.0中可用.Cookie值也存在于$ _REQUEST中
这是一个解决方案的建议.它不完美,因为它无法保证cookie实际上已设置,但可能在您的情况下.
我刚刚在 Vanilla 论坛遇到了这个问题。在第一个页面加载时,在建立会话之前,会创建一个会话 cookie,但每次应用程序想要访问会话变量(以添加到它们中)时,它都会在 $_COOKIE 中查找当前会话 ID,即直到下一页加载才设置。
我的解决方法是在创建 cookie 时手动设置 $_COOKIE 元素。
// Create a cookie to identify the session.
// This line already exists. $Name is the cookie name.
// $SessionID is a random md5 ID that has just been generated.
setcookie($Name, $SessionID, $Expire, $Path, $Domain);
// Set the cookie for the remainder of the page. This is a workaround.
if (!isset($_COOKIE[$Name])) $_COOKIE[$Name] = $SessionID;
Run Code Online (Sandbox Code Playgroud)
我将此作为 Vanilla 的一个错误提出(https://github.com/vanillaforums/Garden/issues/1568),因为这个解决方法感觉有点像黑客,但它现在确实解决了这个问题。
PHP5.3 普通论坛版本 2.0.18.4
归档时间: |
|
查看次数: |
5179 次 |
最近记录: |