php - PHP 电子邮件验证和附加 URL
问题描述
如果已经有答案,我提前道歉。我已经看过了,但我根本无法对我看过的答案做出正面或负面的回答,所以请......温柔一点。
我对 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 的阶段。
我确信我在这里非常密集,编码根本不是我的强项,但任何关于我可以做些什么来完成这项工作以及我哪里出错的指导都将非常感激。
温暖的问候,
乔纳森·克劳。
解决方案
我已经结合逻辑,必须是非空的和有效的电子邮件,然后重定向。否则显示一个通用的无效错误。
<?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>
推荐阅读
- pyspark - pyspark数据框中的分组计数
- javascript - 如何使用匿名函数删除监听器?
- python - Python读取嵌入代码,提取url并将url标题写入新的csv文件
- ruby-on-rails - 如果您是应用程序所有者,请查看日志以获取更多信息。错误 500
- python - 如何将一个数据帧中的列值与另一个数据帧的列值相比较
- wpf - 将数据库中的数据绑定到 WPF DatagridTemplateColumn 时出现问题(模板列有一个组合框)
- python - 如何在能够调用内部函数的同时使函数可调用
- node.js - 使用 request-promise 时无法设置 Koajs 的 ctx.status 和 ctx.body
- python - 根据球队和赢/输列计算 nfl 连胜连败
- architecture - 麒麟实现