这是在一个名为headersessioncookie.php
的页面中<?php
session_start();
if ( ! isset ( $_SESSION['loggedin'] ) ) {
$_SESSION['loggedin'] = FALSE;
}
$expiry = time()+60*60*9000;
setcookie('cookie[loggedin]', '', $expiry, "", "", "", TRUE);
if ( ! isset ( $_COOKIE['cookie[loggedin]'] ) ) {
$_COOKIE['cookie[loggedin]'] = FALSE;
}
?>
这是在名为test.php
的页面中<?php
require_once('headersessioncookie.php'); //start session and cookie
$_SESSION['loggedin'] = TRUE;
$_COOKIE['cookie[loggedin]'] = TRUE;
?>
当我运行test.php然后运行下面名为test1.php ...
的页面时<?php
require_once('headersessioncookie.php'); //start session and cookie
echo "sessionvalue" . $_SESSION['loggedin'] . '<br>';
echo "cookievalue" . $_COOKIE['cookie[loggedin]'] . '<br>';
?>
......我得到了
sessionvalue1
cookievalue
为什么我不能......
sessionvalue1
cookievalue1
... ...
答案 0 :(得分:1)
超全局变量 $ _ COOKIE 仅包含cookie值。如果修改此值,则不会影响cookie,因为您需要将标头发送到浏览器才能这样做。
如果您需要修改它,则必须使用setCookie方法,因为这会发送带有新值的标头。
注意请注意,刷新页面后,只有在使用 setCookie 后才会更新 $ _ COOKIE 。
答案 1 :(得分:1)
所以这应该有效:
文件:headersessioncookie.php
<?php
//Session
session_start();
if ( !isset($_SESSION['loggedin']) )
$_SESSION['loggedin'] = FALSE;
//Cookie
$expiry = time()+60*60*9000;
if ( !isset($_COOKIE['cookieloggedin']) )
setcookie('cookieloggedin', '', $expiry, "", "", true);
?>
文件:test.php
<?php
require_once('headersessioncookie.php'); //start session and cookie
$_SESSION['loggedin'] = TRUE;
setcookie('cookieloggedin', '1', $expiry, "", "", true);
?>
文件:test1.php
<?php
require_once('headersessioncookie.php'); //start session and cookie
echo "sessionvalue" . $_SESSION['loggedin'] . '<br>';
echo "cookievalue" . $_COOKIE['cookieloggedin'] . '<br>';
?>
请注意:
- 如何更新Cookie:https://stackoverflow.com/a/6487597/3933332
- Cookie案例敏感:https://stackoverflow.com/a/11312272/3933332
答案 2 :(得分:0)
回答我自己的问题。事实证明我的代码存在3个主要问题。
1)我试图通过这样做来设置cookie值:
$_COOKIE['cookie[loggedin]'] = FALSE;
原来需要使用setcookie()
来设置cookie值。为$_COOKIE
分配新值将更改该变量的值(在同一页面的范围内),但不会更改cookie内的值(在该页面范围之外,调用{{1}将产生存储在cookie中的值。)
2)以下内容不正确
$_COOKIE
相反它应该是
echo "cookievalue" . $_COOKIE['cookie[loggedin]'] . '<br>';
3)Cookie必须传递一个字符串值。我试图传递一个不是字符串的值= echo "cookievalue" . $_COOKIE['cookie']['loggedin'] . '<br>';
。相反,我可以正确传递值= FALSE