让我先说一下,自从我使用 PHP 以来已经有 20 年左右的时间了,只是为了设定对代码的期望。
我有一个网页,上面有一个表格。我想在提交时验证 PHP 脚本中的表单内容;如果有效,请对其执行某些操作,然后将用户重定向到同一页面并弹出一条警报,显示“谢谢,我们收到了您的消息”或“有错误”。
到目前为止我的代码是这样的:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//validate form
$isValid = FALSE;
//redirect
$referer = $_SERVER['HTTP_REFERER'];
header("Location: $referer");
//display message
echo "<script type='text/javascript'> window.onload=showAlert('test message'); </script>";
}
?>
我可以处理的表单验证,页面重定向有效,但警报无效。我尝试回显仅包含警报(消息)的脚本,但这不起作用。在 SO 上闲逛,发现了一个调用 Javascript 函数 onload 的建议,但这也不起作用。
如果有任何帮助,我们将不胜感激。
我通常使用当前 URL (
$_SERVER['REQUEST_URI']
) 作为 <form>
的 action
属性,以便表单提交到当前页面。
页面重新加载时,您将能够访问
$_POST
变量的输入值,并根据提交数据呈现页面的标记。
注意:始终确保在将数据渲染到页面之前使用
htmlspecialchars
等功能来清理数据,否则您将很容易受到诸如跨站点脚本(XSS)攻击之类的黑客攻击。
<?php
$current_url = $_SERVER['REQUEST_URI'];
$first_name = !empty( $_POST['firstName'] )
? htmlspecialchars( $_POST['firstName'], ENT_QUOTES, 'UTF-8' )
: false;
$last_name = !empty( $_POST['lastName'] )
? htmlspecialchars( $_POST['lastName'], ENT_QUOTES, 'UTF-8' )
: false;
$is_valid = $first_name && $last_name;
?>
<?php if ( $is_valid ) { ?>
<h1><?php echo "$first_name $last_name"; ?></h1>
<?php } ?>
<form action='<?php echo $current_url; ?>' method='POST'>
<input
name="firstName"
placeholder="First name"
type="text"
/>
<input
name="lastName"
placeholder="Last name"
type="text"
/>
<button type="submit">
Submit
</button>
</form>