PHP表单验证,使用Javascript处理错误消息


PHP form validation, uses Javascript for error messages

好的,所以我在index.php上有一个电子邮件表单。我使用mail_check.php来验证这两个字段是否都已填写。(还有更多正在验证,但没有包括在内,因为这不是问题

主要问题是,从mail_check.php我想被发送回index.php,并在div id="mailresponse"中放置一条消息。我选择了PHP和Javascript来实现这一点。

Index.php

<div id="mailrespond"></div>
    <form method="post" action="mail_check.php">
    <span>Name: <input type="text" name="name" maxlength="30" /></span><br />
    <span>Email: <input type="text" name="email" maxlength="30" /></span><br />
    <input type="submit" value="Sign Up" name="registration">
    </form>
</div>

mail_check.php

if(isset($_POST['registration']))
$name = $_POST['name'];
$email = $_POST['email'];

if(empty($email) || empty($name)){ 
    // if email and name are empty
    //header ("location: index.php");
    ?>
    <script language="javascript" type="text/javascript">
        window.location.replace("index.php");
        function msg() {
            // creating elements are a safer method then innerHTML
            dv = document.createElement('div'); // creates a Div element 
            dv.setAttribute('class', 'error_msg'); // adds error styling
            txt = document.createTextNode('please enter your name and email '); // create the message
            dv.appendChild(txt); // place the text node on the element 
            document.getElementById("mailrespond").appendChild(dv);
            }
            window.onload = msg;
    </script>
    <?php }

代码还在继续,但我的问题是我没有得到反馈消息。我对这一切有点陌生——如果你能帮忙,我将不胜感激!:)

<----@落选者请留下理由!谢谢

试试这个(请不要调用表单字段名称,因为表单也可以有名称)

Index.php

<!DOCTYPE html>
<html>
<head>
<title>Mail respond</title>
<script>
window.onload=function() {
  document.getElementById("mailform").onsubmit=function(){
    if (this.fullname.value=="" || this.email.value=="") {
      alert("Please fill in name and email");
      return false;
    } 
    return true; // allow form submission
  }
}
</script>
</head>
<body> 
<div id="mailrespond"></div>
    <form method="post" action="mail_check.php" id="mailform">
    <span>Name: <input type="text" name="fullname" maxlength="30" /></span><br />
    <span>Email: <input type="text" name="email" maxlength="30" /></span><br />
    <input type="submit" value="Sign Up" name="registration">
    </form>
</div>
</body>
</html>

mail_check.php

<?PHP 
  if(isset($_POST['registration']))
  $name = $_POST['fullname'];
  $email = $_POST['email'];

  if(empty($email) || empty($name)){ 
  // if email and name are empty - only seen if JavaScript is turned off
?>
    <h3>You did not fill in name and email</h3>
    <p>please wait to be redirected or click <a href='index.php'>here</a></p>;
    <meta http-equiv="refresh" content="3; url=http://example.com/index.php" />
    <script type="text/javascript">
     window.onload=function() {
        setTimeout(function() {
          window.location.replace("index.php");
        },3000);
     }
</script>
   <?php } ?>

您在msg函数中重定向到index.php,所以它不做任何其他操作。

您应该使用纯PHP,在$_SESSION中设置一个组件,通过PHP重定向到index.PHP,并在index.PHP中检查该组件是否存在。