javascript - 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;
}
非常感谢所有帮助。谢谢
解决方案
对于第一个问题:
当您在设置标题之前输出某些内容时,就会出现这种情况。在您的脚本中的某处(此处未显示的部分),您正在输出一些东西。删除所有输出,错误将消失。
这方面的一个例子可能是:
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
""
null
isset
推荐阅读
- visual-studio-code - 如何列出具有特定扩展名的所有文件
- reactjs - 可以有dataloader和rest api缓存吗?
- c# - 在c#中从日期时间中删除时间
- swift - 快速适当地处理存储属性(willSet/didSet)
- angular - Angular-HttpClient:将对象映射到数组属性
- c# - 如何平移和旋转图像
- python - Python:带颜色条的条形图
- javascript - 如何在 Laravel 5.6 中使用 vue-slider-component
- html - uib-pagination,限制可见页面按钮的最大数量
- jsf - Primefaces 命令按钮导致页面重新加载