【发布时间】:2013-04-28 17:17:37
【问题描述】:
我还是 php 的初学者,在使用逻辑运算符 && 时遇到了一些问题。我有一个令牌和秘密答案脚本,它们都是文本框。当用户提交令牌并回答时,脚本进入数据库,如果所有检查都清除(错误消息等),则进入下一步(在那里输入新密码)。实际的脚本在我的实时站点中运行良好,但由于某种原因它不能在我的计算机上本地运行(老实说,这让我有点偏执,以防万一它不是 100% 安全)。经过大量测试,脚本指向了这段代码:
if(isset($uid) && isset($uidTwo)) {
header('Location: reset.php');
exit();
}
$uid 存储用户数据库中的 users_id,$uidTwo 存储答案数据库中的 tables_id(其中 user_id 作为其主要列之一)。当两者都匹配 (True) 时,脚本会进入重置页面。
我做了很多测试,把 && 改成 ||似乎可以工作并将其处理到下一页,但这种方式仅适用于令牌框,您可以在答案框中输入任何内容,例如 (ftgyhh),所以这不好。
我检查了已发送的标头等,因为我有错误消息,但本地脚本似乎没有任何作用。
那么有没有人有我可能错过的任何想法?
编辑:在 $uidTwo 上做了一个 var_dump,发现它是 NULL,然后我意识到它可能是数据库端,所以我导入了数据库的早期版本,发现它就是这样。该脚本现在可以在本地运行,但是在读取数据库 sql 文件之前和之后,我看不出我做错了什么。哦,好吧,这些东西是来试试我们的。为大家的帮助干杯
【问题讨论】:
-
你能显示设置
$uid和$uidTwo的代码吗? -
是的,$uid 的代码是:list($uid) = mysql_fetch_array($result); $uidTwo 也一样
-
只是一个提示:isset 可以检查多个变量,因此不需要逻辑运算符。请参阅 PHP 手册isset()
-
SirDerpingtom 我已经多次从脚本中删除了 isset,但仍然没有。该脚本在我的实时站点中运行良好只是不知道为什么它在本地没有
-
在您的
isset()检查之前尝试转储变量以查看它们的值。var_dump($uid, $uidTwo)应该可以解决问题。
标签: php forms header logical-operators