PHP !isset 和 empty & session check 每次都变为真[重复]

Posted

技术标签:

【中文标题】PHP !isset 和 empty & session check 每次都变为真[重复]【英文标题】:PHP !isset & empty & session check turning true every time [duplicate] 【发布时间】:2017-10-20 13:36:43 【问题描述】:

看起来很傻,但真的让我很困惑。 每次刷新都会让我进入这种状态。

if(!isset($_SESSION)) 
session_start();
echo "Session turned on";

我尝试将条件更改为if(empty($_SESSION))if (session_status() == php_SESSION_NONE) 但每次它里面的语句都会被执行。

我正在尝试增加计数器

<?php 
if(!isset($_SESSION)) 
session_start();
echo "Session turned on";


$current_time=date('m-d-Y H:i:s');
echo $current_time;
if(!isset($_SESSION["counter"]["time"]))

    $_SESSION["counter"]["time"]=date('m-d-Y H:i:s');
    increamentCounter();

$diff = abs(strtotime($current_time) - strtotime($_SESSION["counter"]["time"]));
$time_in_minutes=$diff/60;
if($time_in_minutes>30)

    unset($_SESSION["counter"]["time"]);

echo $time_in_minutes."<br>";
function increamentCounter()

    $pre_counter_value = file_get_contents("counter.txt");
    $counter_value = (int)$pre_counter_value+1;
    file_put_contents("counter.txt", $counter_value);

echo file_get_contents("counter.txt");
?>

【问题讨论】:

会话通常用于多个页面。如果这没有被传递到后续页面,您应该编辑您的帖子以包含它的代码。 “每次刷新都会让我处于这种状态” - 对;会话从未设置,因此您发布的代码就是这样做的;它的工作。我们不知道您在哪里设置会话数组/值。 @C0dekid 我在这里提问之前已经遵循了这个答案,这对我不起作用! 好吧,下面给出的每个答案都是可能重复发布的内容,我还要求澄清;我什么也没回。所以和他们一起去吧。 那只是一页..我正在尝试会话。 【参考方案1】:

在调用session_start() 之前,您正在检查会话变量,因此您的 if 条件将始终返回 true。试试:

session_start();
if(!isset($_SESSION)) 
    echo "Session detected";
 else 
    echo "No session";

【讨论】:

以上是关于PHP !isset 和 empty & session check 每次都变为真[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP IF 语句问题与 isset 和 !empty

php empty();和isset();

php中的isset()和empty()

php isset和empty方法的区别

详解php中空字符串和0之间的关系

PHP中empty()和isset()的区别