首页 > 解决方案 > PHP/JavaScript 重定向问题

问题描述

作为一个附带项目,我尝试创建一个 COVID-19 自我评估工具。到目前为止,一切都顺利进行。当我将所有表单数据发布到 PHP 脚本中并使用此方法时,我不断收到无法修改标题的错误。

    $name = $symtpoms = $home = $travel = $contact = $doctorOrdered = $appExposed = null;

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $name = input($_POST["name"]);
        $symtpoms = input($_POST["symptoms"]);
        $home = input($_POST["home"]);
        $travel = input($_POST["travel"]);
        $contact = input($_POST["contact"]);
        $doctorOrdered = input($_POST["doctorOrdered"]);
        $appExposed = input($_POST["appExposed"]);

        if (isset($symtpoms) && isset($home) && isset($travel) && isset($contact) && isset($doctorOrdered) && isset($appExposed)) {
            if ($symtpoms == true || $home == true || $travel == true || $contact == true || $doctorOrdered == true || $appExposed == true) {
                Header("Location: #safeFalse");
            } else {
                Header("Location: #safeTrue");
            }
        }
    }

    function input($data)
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }

然后,当我尝试下面的代码时,无论我应该得到什么结果,我总是会被发送到#safeFalse

    $name = $symtpoms = $home = $travel = $contact = $doctorOrdered = $appExposed = null;

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $name = input($_POST["name"]);
        $symtpoms = input($_POST["symptoms"]);
        $home = input($_POST["home"]);
        $travel = input($_POST["travel"]);
        $contact = input($_POST["contact"]);
        $doctorOrdered = input($_POST["doctorOrdered"]);
        $appExposed = input($_POST["appExposed"]);

        if (isset($symtpoms) && isset($home) && isset($travel) && isset($contact) && isset($doctorOrdered) && isset($appExposed)) {
            if ($symtpoms == true || $home == true || $travel == true || $contact == true || $doctorOrdered == true || $appExposed == true) {
                echo "<script type='text/JavaScript'>
                window.location.href = '#safeFalse';
                </script>";
            } else {
                echo "<script type='text/JavaScript'>
                window.location.href = '#safeTrue';
                </script>";
            }
        }
    }

    function input($data)
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }

非常感谢所有帮助。谢谢

标签: javascriptphp

解决方案


对于第一个问题:

当您在设置标题之前输出某些内容时,就会出现这种情况。在您的脚本中的某处(此处未显示的部分),您正在输出一些东西。删除所有输出,错误将消失。

这方面的一个例子可能是:

echo "output!";
header("Location: file.php"); //WE FAIL... WE OUTPUTTED SOMETHING IN THE LINE ABOVE

对于第二个问题:

好吧,看看下面的声明:

 if (isset($symtpoms) && isset($home) && isset($travel) && isset($contact) && isset($doctorOrdered) && isset($appExposed))

它基本上说:如果所有这些都已设置(设置而不是 NULL),请继续。

然后你说:

if ($symtpoms == true || $home == true || $travel == true || $contact == true || $doctorOrdered == true || $appExposed == true)

注意你如何使用 2 个=标志?这意味着它评估真假。如果这些变量中的任何一个评估为true,就是这种情况,考虑到我非常怀疑所有变量都被赋予了虚假值,它总是会进入 if 语句。

你基本上说:如果 a OR b OR c OR e 等计算结果为真,它应该继续。

这将失败的唯一方法是如果所有变量都评估为虚假值,我再次高度怀疑,因为这意味着所有变量都必须是或0,其中我们基本上可以使该值无效,因为已经由.null""nullisset


推荐阅读