花了几个小时我还是想不明白。我试图验证一个电子邮件地址,但每次,无论我是什么类型,它给我的消息,如果它是空的"你没有输入一个电子邮件地址!"。
编辑:固定无效的电子邮件地址错误,因为我没有添加一个名称到我的输入文本。现在,当我输入正确的电子邮件时,它一直显示"请等待"。什么好主意吗?是因为它没有连接到mysql吗?
$email = mysql_real_escape_string($_POST['signup-email']);
if(empty($email)){
$status = "error";
$message = "You did not enter an email address!";
}
else if(!preg_match('/^[^'W][a-zA-Z0-9_]+('.[a-zA-Z0-9_]+)*'@[a-zA-Z0-9_]+('.[a-zA- Z0-9_]+)*'.[a-zA-Z]{2,4}$/', $email)){ //validate email address - check if is a valid email address
$status = "error";
$message = "You have entered an invalid email address!";
}
else {
$existingSignup = mysql_query("SELECT * FROM signups WHERE signup_email_address='$email'");
if(mysql_num_rows($existingSignup) < 1){
$date = date('Y-m-d');
$time = date('H:i:s');
$insertSignup = mysql_query("INSERT INTO signups (signup_email_address, signup_date, signup_time) VALUES ('$email','$date','$time')");
if($insertSignup){ //if insert is successful
$status = "success";
$message = "You have been signed up!";
}
else { //if insert fails
$status = "error";
$message = "Ooops, Theres been a technical error!";
}
}
else { //if already signed up
$status = "error";
$message = "This email address has already been registered!";
}
}
HTML: <div id="signupform">
<form id="newsletter-signup" action="?action=signup" method="post">
<fieldset>
<input type="text" name="signup-email" id="signup-email" size="20" value="Email Address" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"/>
<input type="submit" id="signup-button" value="+"/>
</br></br><p id="signup-response"></p>
</fieldset>
</form>
if(strlen($_POST['signup-email'])) == 0){
$status = "error";
$message = "You did not enter an email address!";
}
然后给你的post变量一个名字:
<input type="text" name='signup-email' id="signup-email" size="20" value="Email Address" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"/>
您的表单中没有名为email
的字段…
你还应该做:if(!isset($_POST['email'])) {
如果我没理解错的话(除非你没有贴出所有的代码)。
尝试将name="email"
添加到电子邮件输入的html…另外,$email
应该定义为$email = $_POST['email'];
您的输入字段没有名称,PHP从输入的name属性检索$_POST
变量。换句话说,没有名字,没有访问输入值的权限。采纳绘图者的建议,将name属性添加到输入中。你也有大量的空格在你的正则表达式之间的[a-zA-
和Z0-9_]
'/^[^'W][a-zA-Z0-9_]+('.[a-zA-Z0-9_]+)*'@[a-zA-Z0-9_]+('.[a-zA- Z0-9_]+)*'.[a-zA-Z]{2,4}$/'
不确定这是否来自复制和粘贴,但如果这些空格在你的源代码中,它可能会导致正则表达式不工作。我从来没有听说过preg_match()
函数的"忽略空白"标志,如果我错了,请纠正我。