PHP电子邮件验证和附加UR​​L

时间:2018-10-22 15:33:11

标签: php forms validation email email-validation

如果对此已有答案,我深表歉意。我已经看过了,我简直无法做出我已经看过的答案,所以请...要温柔。

我真的是PHP新手,并不精通Javascript。本质上,我只是在为自己的企业建立一个网站,而我想做的就是在主页上建立潜在客户表格。目标是安全地获取客户的电子邮件地址,并将他们的电子邮件附加到URL上,然后将其重定向到预订页面。

即,客户在首页

上输入其电子邮件地址
www.hygenius.co 

,当他们单击“提交”时,它会验证他们是否输入了真实地址,并且该字段不是空白,然后将他们带到

www.hygenius.co/book?email=customersemail

但是,对于我的一生来说,我似乎无法获得我试图工作的任何东西。

到目前为止,我的表单看起来像这样;

<form action="lead.php" method="POST">
 <input type="text" name="email" placeholder="Enter a valid E-mail Address">
 <span class="error">* <?php echo $emailErr;?></span>
 <input type="submit" name="submit" value="Submit">  
</form>

我的lead.php文件如下所示。

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

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  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"; 
    }
  }

}

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

header( 'Location: http://www.hygenius.co/book.html' ) ;
?>

到目前为止,我还没有努力使电子邮件验证正常工作,我试图遵循W3schools指南,但没有任何效果。它仅允许您单击提交并直接进入预订页面,而无需任何验证,并且也不会出现错误消息。我不知道如何进入可以将信息附加到URL的阶段。

我敢肯定,我只是在这里变得非常笨拙,编码根本不是我的专长,但是任何有关如何进行这项工作以及我要去哪里的指导都将得到极大的赞赏。

亲切的问候,

乔纳森·乌鸦。

1 个答案:

答案 0 :(得分:1)

我将逻辑(必须为非空和有效的电子邮件)组合在一起,然后进行重定向。否则,将显示一般性的无效错误。

<?php

$emailErr = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
  if (
    !empty($_POST["email"]) &&
    filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)
  )
  {
    header('location: ?email=' . urlencode($_POST["email"]));
    exit;
  } else {
    $emailErr = "Valid email address required."; 
  }
}

?>
<form method="POST">
    <input type="text" name="email" placeholder="joe@example.com">
    <span class="error"><?php echo $emailErr;?></span>
    <input type="submit" name="submit" value="Submit">  
</form>