PHP:提交网络表单,重定向到同一页面,显示警报

问题描述 投票:0回答:1

让我先说一下,自从我使用 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 的建议,但这也不起作用。

如果有任何帮助,我们将不胜感激。

javascript php forms alerts
1个回答
0
投票

我通常使用当前 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>
© www.soinside.com 2019 - 2024. All rights reserved.