1

我仍然是 php 的初学者,我遇到了逻辑运算符 && 的一些问题。我有一个令牌和秘密答案脚本,它们都是文本框。当用户提交令牌并回答时,脚本进入数据库,如果所有检查都清除(错误消息等),则进入下一步(在那里输入新密码)。实际脚本在我的实时站点中运行良好,但由于某种原因它不能在我的计算机上本地运行(老实说,这让我有点偏执,以防万一它不是 100% 安全)。经过大量测试,脚本指向这段代码:

if(isset($uid) && isset($uidTwo)) {
           header('Location: reset.php');
           exit();
       }

$uid 存储用户数据库中的 users_id,$uidTwo 存储答案数据库中的 tables_id(它也将 user_id 作为其主要列之一)。当两者都匹配(真)时,脚本会进入重置页面。

我做了很多测试,将 && 改为 || 似乎可以工作并将其处理到下一页,但这种方式仅适用于令牌框,您可以在答案框中输入任何内容,例如 (ftgyhh),所以这不好。

我检查了已经发送的标头等,因为我有错误消息,但本地脚本似乎没有任何作用。

那么有没有人有我可能错过的任何想法?

编辑:在 $uidTwo 上做了一个 var_dump,发现它是 NULL,然后我意识到它可能是数据库端,所以我导入了早期版本的数据库,发现它就是这样。该脚本现在可以在本地运行,但是在读取数据库 sql 文件之前和之后,我看不出我做错了什么。哦,好吧,这些东西是来试试我们的。为你们的帮助干杯

4

2 回答 2

3

这里没有足够的信息来回答。仅供参考,你可以这样做:

if (isset($uid, $uidTwo)) {
    header('Location: reset.php');
    exit();
}

而不是使用 &&。

我会做类似的事情

echo $uid ? "Uid is set" : "Uid is not set";
echo  $uidTwo ? "Uid2 is set" : "Uid2 is not set";

在标题之前开始工作,直到它们不是我认为的那样。

于 2013-04-28T17:26:30.403 回答
0

isset()检查变量是否存在。您可能想使用empty()来查看变量是否包含值,如下所示:

if(empty($uid) && empty($uidTwo)) {
       header('Location: reset.php');
       exit();
}
于 2013-04-28T17:26:05.110 回答