我还是php的初学者,我遇到了逻辑运算符&&的一些问题。我有一个令牌和秘密答案脚本,它们都是文本框。当用户提交令牌并回答时,脚本会进入数据库,如果所有检查都清除(错误消息等),则进入下一步(键入新密码)。实际的脚本在我的实际网站上运行良好,但由于某种原因,它在我的计算机上不能在本地工作(这让我有点偏执,说实话,以防它不是100%安全)。通过大量测试,脚本指向了这段代码:
if(isset($uid) && isset($uidTwo)) {
header('Location: reset.php');
exit();
}
$ uid存储来自users数据库的users_id,$ uidTwo存储来自answer数据库的tables_id(其中user_id也是其主要列之一)。当两者匹配(True)时,脚本将继续进入重置页面。
我做了很多测试,改变了&&到||似乎工作并将其处理到下一页,但这种方式只适用于令牌盒,你可以在答案框中键入任何内容,例如(ftgyhh),这样就不行了。
我已检查过已发送的标头等,因为我有错误消息,但似乎没有任何东西可以在本地运行。
所有人都有任何我可以错过的想法吗?
编辑:在$ uidTwo上有一个var_dump,发现它是NULL,然后我意识到它可能是数据库端,所以我导入了早期版本的数据库,发现就是这样。该脚本现在可以在本地运行,但是在读取数据库sql文件之前和之后,我看不出我做错了什么。哦,这些东西可以试试我们。欢呼各位帮忙答案 0 :(得分:3)
此处没有足够的信息可以回答。仅供参考,你可以这样做:
if (isset($uid, $uidTwo)) {
header('Location: reset.php');
exit();
}
而不是使用&&amp ;.
我会做像
这样的事情echo $uid ? "Uid is set" : "Uid is not set";
echo $uidTwo ? "Uid2 is set" : "Uid2 is not set";
在标题之前并开始回归,直到它们不是我认为的那样。
答案 1 :(得分:0)
isset()
检查变量是否存在。您可能希望使用empty()
来查看变量是否包含值,如下所示:
if(empty($uid) && empty($uidTwo)) {
header('Location: reset.php');
exit();
}