【发布时间】:2011-01-14 08:30:39
【问题描述】:
我正在尝试创建一个 validate-email javascript 并让它与表单和 PHP 一起使用。当然,有些问题...
正如您在我的表单中看到的,我确实将“post”定义为方法。但我只能像获取方法一样检索数据。在我开始添加电子邮件验证脚本并采用代码之前,它正在工作。
如果电子邮件不正确,我会返回 false。不应该执行对 test.php 的请求(在操作中定义)吗?就像现在一样,即使我返回 false,也可以访问该页面。
根据上述问题的答案,如果电子邮件验证正常,我是否需要从 Javascript 提交表单?
javascript:
function isValidEmail() {
regExp = /^[a-zA-Z]+([_\.-]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([\.-]?[a-zA-Z0-9]+)*(\.[a-zA-Z]{2,4})+$/;
if(document.subscribe.email1.value.search(regExp) == -1){
alert(document.subscribe.email1.value + " Incorrect email address");
return false;
}
//document.subscribeForm.submit();
return true;
}
php:
<?php
echo $_POST['email1'];
$mysqli = mysqli_connect("localhost", "root", "", "test", "3306");
$result = mysqli_query($mysqli, "SELECT email, id, subscriber, subscribed_date FROM `user` u;");
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
foreach($row as $key => $value){
echo "$key = $value<BR/>";
}
}
mysqli_free_result($result);
mysqli_close($mysqli);
?>
html:
<div id="subscribe">
<form action="test.php" name="subscribe" method=post">
<p id="formlabel">E-mail</p> <input type="text" name="email1">
<br>
<p id="formlabel">Repeat e-mail</p> <input type="text" name="email2"> <br/>
<input type="submit" value="Subscribe" onclick="isValidEmail()">
</form>
【问题讨论】:
-
停止。请停下。验证电子邮件地址是一个难题。您的代码已经有误报(例如,它将阻止 *.museum 域上的任何电子邮件地址)。如果您想查看电子邮件地址是否真实,请向其发送电子邮件并要求用户单击其中包含唯一令牌的链接。
-
感谢您的评论。我知道缺少 *.museum。也许你的想法是我应该坚持的,我需要考虑一下。
-
或者实际上是
.travel,或者十一个新的 IDNA TLD 中的任何一个。一般来说,当引入新 TLD 时,您不必担心更新所有应用程序!
标签: php javascript html forms email-validation