При установке ложного значения в сеанс сеанс устанавливается, но значение пуст. Тип является логическим. Этот код:PHP session false not set
<?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. Является ли это ожидаемым поведением? Я пытаюсь прочитать сеанс с кодом:
if (isset($_SESSION["IsMobile"]))
{
if (is_bool($_SESSION["IsMobile"]))
{
header("location: Mobile/");
exit;
}
}
, но, конечно, это не работает, потому что IsMobile пуст булево. (В оригинале я просто использую IsMobile. IsMobile1 и IsMobile2 предназначены только для тестирования).
'is_bool' говорит вам, что вы имеете дело с булевым. Он не проверяет, соответствует ли эта переменная true или false. – andrewsi
U не может выбраться из 'false', это просто ничего в PHP, как и в случае с нулевым – DarkBee
True. Я имел в виду filter_var, а не is_bool и filter_var ('', FILTER_VALIDATE_BOOLEAN); return false, ожидаемое поведение. От: http://stackoverflow.com/questions/7336861/how-to-convert-string-to-boolean-php – Makla