【问题标题】:Only one line executed in a false IF - PHP只有一行在错误的 IF 中执行 - PHP
【发布时间】:2014-10-18 11:12:42
【问题描述】:

我正在将分页集成到 wordpress 块中,应该发生的是每当我单击“旧帖子”按钮时,帖子偏移量在另一个 php 文件中递增(块文件和递增文件是单独的文件)。

每当我点击较旧的帖子时,都会发生一些不应该发生的魔法:

问题在于其中一个 if 语句,发生的情况是 IF 语句的计算结果为 false,但我在代码中标记的那一行仍然被执行(回显不执行,但 $_SESSION["inf"] = 0; 执行) .

这里是代码。

if(isset($_POST["paginate_btn"])){
    if(isset($_SESSION["inf"])){
        echo "PREVIOUS:".(string)($_SESSION["inf"]);
        $_SESSION["inf"] = $_SESSION["inf"] + 5;
        echo "<br/> incremented by 5, RESULT:".(string)($_SESSION["inf"]);
    }
    else{
        echo "<br/> isset session inf failed, set to 5";
        $_SESSION["inf"] = 5;
    }
}
else if(isset($a) and ($a != $url)){
        echo "<br/>dif page";
        if(isset($_SESSION["inf"])){
            echo "<br/> unset";
            $_SESSION["inf"] = 0; <----- THIS LINE HERE!
        }
        else{
            echo "<br/>session inf not set and button not pressed";
        }
}
else{
    echo "<br/> button not pressed, a is not set and is same page";
    $_SESSION["inf"] = 0;
}

我已经搞砸了好几个小时,我不明白这里是什么情况..

var_dump((isset($a) and ($a != $url)));evaluates false,但仍然只有一行代码被执行,回显没有,甚至之前的差异页面回显也没有......

有趣的是,如果我注释掉那一行,这将不再发生,我什至尝试将它设置为不同的变量,所以它肯定会以某种方式单独运行。

if 语句后的 Var_dump 代码。

echo "<br/>--1---<br/>";
var_dump((isset($a) and ($a != $url)));
echo "<br/>--2---<br/>";
var_dump((isset($_SESSION["inf"])));
echo "<br/>---<br/>";
echo $_SESSION["inf"];
echo "<br/>---<br/><br/>";

【问题讨论】:

  • 当您启动if 条件时,您确定$_SESSION["inf"] 不为零吗?绝对是那条线,而不是另一条将$_SESSION["inf"] 设置为零的线吗?
  • Jep,例如,如果我在该特定行上将其设置为 27,则 $_SESSION["inf"] 在下一次刷新的 if 条件之前为 27。

标签: php variables session


【解决方案1】:

另一部分代码将$_SESSION["inf"] 设置为0

如果您没有看到 echos,它们不会被执行。

【讨论】:

  • 这就是我的想法,但是,它不仅仅是 0,例如,如果我将该特定行设置为强制 $_SESSION["inf"] 为 27,它会将其设置为 27下一次运行,如果我注释掉那条线,它就不再在那里重置(即使没有执行回声)。
  • 重定向?但我假设你看到了echos 的其余部分。发布一个重现问题的最小示例。没有冒犯,但我不相信你的判断/推理。
  • 较旧的新闻按钮重新加载同一页面并尝试将其增加 5。每次重新加载时,数字都会重置为我在该行设置的相同,这是输出(该行设置为 $_SESSION["inf"] = 32; ,每次按旧新闻时完全相同。imgur.com/xEvaOTO跨度>
  • 你没有在听。
  • 对不起,我不明白你在问什么
猜你喜欢
  • 2011-10-06
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
相关资源
最近更新 更多