【发布时间】: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。