gpt4 book ai didi

未设置 PHP session false

转载 作者:行者123 更新时间:2023-12-04 15:55:59 25 4
gpt4 key购买 nike

当给session设置false值时,session被设置,但是值为空。类型是 bool 值。这段代码:

<?php
session_start();
$_SESSION["IsMobile1"] = false;
$_SESSION["IsMobile2"] = true;
//header("location: ../../../index.php");
echo "IsSet1: " . isset($_SESSION["IsMobile1"]) . "; IsMobile1: " . $_SESSION["IsMobile1"] . "; type: " . gettype($_SESSION["IsMobile1"]) . ";<br>";
echo "IsSet2: " . isset($_SESSION["IsMobile2"]) . "; IsMobile2: " . $_SESSION["IsMobile2"] . ";<br>";
?>

打印出来:

IsSet1: 1; IsMobile1: ; type: boolean;
IsSet2: 1; IsMobile2: 1;

我的 PHP 版本是 5.5.13。这是预期的行为吗?我正在尝试使用代码阅读 session :

if (isset($_SESSION["IsMobile"]))
{
if (is_bool($_SESSION["IsMobile"]))
{
header("location: Mobile/");
exit;
}
}

但当然它不起作用,因为 IsMobile 是空 bool 值。 (原来我只使用 IsMobile。IsMobile1 和 IsMobile2 仅用于测试)。

最佳答案

我自己遇到过这个问题很多次,虽然还没有得到证实,但我得出了这个结论:

由于 boolean 类型不能用作 1 或 0 的常量,它只是碰巧在打印或任何其他输出尝试时被强制转换为 int。但它只发生在 TRUE 上。 FALSE 始终(或至少在大多数情况下)保持为空(我从未见过 bool var 输出 FALSE)。

但好消息是,如果您在 if 语句中使用定义为 FALSE 的变量,它将被解释为 FALSE (正如预期的那样)。

那么,想要输出怎么办呢?

输出字符串:

if ($_SESSION["IsMobile"] == FALSE) {
echo "FALSE";
}

更新哦,是的,这是我在文档中遗漏的内容:

A boolean TRUE value is converted to the string "1". Boolean FALSE is converted to "" (the empty string). This allows conversion back and forth between boolean and string values.

The source

关于未设置 PHP session false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26982016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com