繁体   English   中英

PHP/JavaScript 重定向问题

[英]PHP/JavaScript Redirect Issue

作为一个附带项目,我尝试创建一个 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;
    }

非常感谢所有帮助。 谢谢

对于第一个问题:

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

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

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),go on。

然后你说:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM