【问题标题】:Logical operator (&&) not working locally in php逻辑运算符 (&&) 在 php 中无法本地工作
【发布时间】: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


【解决方案1】:

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

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";

在标题之前,然后开始往回走,直到它们不是我认为的那样。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多