我有一个问题。当我想用布尔值设置Cookie时(只是假值)它不会存储。
setcookie('myCookie',false);
即使我添加到期时间
setcookie('myCookie',false,time()+3600);
注意:未定义的索引:第4行的C:\ xampp \ htdocs \ Web \ php \ php_global_user.php中的myCookie
答案 0 :(得分:9)
Cookie是纯文本。当您将PHP布尔值转换为文本时,只能使用true
获得合理的值,因为这就是PHP的设计方式:
var_dump((string)true, (string)false);
string(1) "1"
string(0) ""
只需从头开始使用文字:
setcookie('myCookie', '0');
......或:
setcookie('myCookie', $value ? '1' : '0');
答案 1 :(得分:2)
使用0和1代替,然后再次将其更改回布尔值,然后加载cookie:
// set value to example variable
$setVar = true;
// setting the cookie
setcookie('myCookie', $setVar ? '1' : '0');
// reading the cookie
$readVar = isset($_COOKIE['myCookie']) && $_COOKIE['myCookie'] === '1';