[英]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 等评估为真,它应该继续。
这将失败的唯一方法是如果所有变量都评估为虚假值,我再次高度怀疑,因为这意味着所有变量都必须是0
, null
或""
,我们基本上可以在其中无效null
值,因为该值已由isset
处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.