【问题标题】:PHP !isset & empty & session check turning true every time [duplicate]PHP !isset 和 empty & session check 每次都变为真[重复]
【发布时间】: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 我在这里提问之前已经遵循了这个答案,这对我不起作用!
  • 好吧,下面给出的每个答案都是可能重复发布的内容,我还要求澄清;我什么也没回。所以和他们一起去吧。
  • 那只是一页..我正在尝试会话。

标签: php session isset is-empty


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多