javascript - PHP 电子邮件验证无法正常工作

标签 javascript php jquery html css

我正在使用单选按钮来显示表单的文本框。我添加了一个 PHP 脚本来验证电子邮件并在完成后打开另一个页面。但似乎没有任何效果。它显示文本框为空时的错误消息,即使没有按下提交按钮,如果电子邮件格式不正确,它也会刷新页面。

这是我的代码:

<?php

// define variables and set to empty values
$emailErr = "";
$email = "";

if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
    // check if e-mail address is well-formed
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Invalid email format"; 
    }
    else{
        header("Location:create.php")
    }
  }

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}


?>

function ShowHideDiv() {
  var chkYes1 = document.getElementById("chkYes1");
  var dvtext1 = document.getElementById("dvtext1");
  var chkYes2 = document.getElementById("chkYes2");
  var dvtext2 = document.getElementById("dvtext2");
  var button = document.getElementById("button");
  dvtext1.style.display = chkYes1.checked || chkYes2.checked ? "block" : "none";
  dvtext2.style.display = chkYes2.checked ? "block" : "none";
  btn1.style.display = chkYes1.checked ? "block" : "none";
  btn2.style.display = chkYes2.checked ? "block" : "none";
}
<div class="content login-container">
  <div class="form-login">
     <label for="chkYes1">
        <input type="radio" id="chkYes1" name="chk" onclick="ShowHideDiv()" />
        I am new on Swadonline
      </label>
      <br>
      <br>
      <div id="dvtext1" style="display: none" class="lgntxt">
        Please enter your Email Address *
        <br>
        <input type="text" id="txtBox" name="email" />
      </div>
      <button style="display: none" id="btn1" class="btn third" type="submit" name="submit" value="Submit">CONTINUE</button>
  </div>
</div>
  

最佳答案

在html中改变这一行

<button style="display: none" id="btn1" class="btn third" type="submit" name="submit" value="Submit">CONTINUE</button>

<input type="submit"  style="display: none" id="btn1" class="btn third"  name="my_form_submit" value="CONTINUE">

现在您的 php 更改如下:

<?php

// define variables and set to empty values
$emailErr = "";
$email = "";
if(isset($_POST['my_form_submit'])){ // only check validation if form has been submitted, else don't validate

    if (empty($_POST["email"])) {
        $emailErr = "Email is required";
      } else {
        $email = test_input($_POST["email"]);
        // check if e-mail address is well-formed
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          $emailErr = "Invalid email format"; 
        }
        else{
            header("Location:create.php");
        }
      }

    function test_input($data) {
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      return $data;
    }
}

?>

关于javascript - PHP 电子邮件验证无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47192655/

相关文章:

javascript - 使用 AngularJS 更改动态表的特定 td 行的背景

javascript - EXT JS-架构

php - PDO 中的 mysql_result 是什么?

javascript - 单击时如何删除按钮中的蓝色框阴影边框

javascript - 如何在制作动画时禁用链接

javascript - 词法环境构造函数

javascript - 制作循环同步 Node js web-kit

php - 通过 php 内爆函数格式化 SQL 查询

php - 如何根据 PHP 中选定的百分比返回数组的一部分?

javascript - jQuery 在选中时获取复选框值,在未选中时删除值