【问题标题】:PHP Email Validation & Append URLPHP 电子邮件验证和附加 URL
【发布时间】:2019-03-26 17:46:06
【问题描述】:

如果已经有答案,我提前道歉。我已经看过了,但我根本无法确定我看过的答案,所以请...温柔一点。

我对 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 的阶段。

我确信我在这里非常密集,编码根本不是我的强项,但任何关于我可以做些什么来完成这项工作以及我哪里出错的指导都将非常感激。

热烈的问候,

乔纳森·克劳。

【问题讨论】:

  • 试试&lt;input type="email"。我们现在有了,由您的浏览器处理!
  • 您的标头调用会启动一个新请求,因此可能会在最后传递 ?error=' . $emailErr 并在您的表单页面上检查 $_GET['error']
  • 请不要使用all-in-one sanitize function(带有误导性名称)。了解您要防止什么并为此努力。不要只是盲目地应用函数。
  • 仅供参考:您的图书页面是一个 HTML 文件,您可能错过了它。
  • 不要在用户输入中使用htmlspecialcharsstripslashes。无论什么书推荐这样做,都已经过时了。

标签: php forms validation email email-validation


【解决方案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>

【讨论】:

  • 哇,这看起来比我想象的要简单得多。感谢您的帮助!
猜你喜欢
  • 2011-09-25
  • 2017-03-19
  • 2020-08-08
  • 2011-03-21
  • 2018-05-05
  • 2017-10-12
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
相关资源
最近更新 更多