我有一个简单的表单,我试图阻止同一封电子邮件被输入两次并且是有效的电子邮件。我有它的工作,但后来我的网站转移到一个新的服务器,现在它停止工作。
我是否需要在新服务器上更改或查找某些配置才能使其正常工作?
这是我的代码:
if(isset($_POST['submit'])) {
$em = trim($_POST['email']);
$sql = mysql_query("SELECT email FROM survey_email WHERE email='".mysql_real_escape_string($_POST['email'])."'") or die(mysql_error());
$check = mysql_fetch_assoc($sql);
if($em === '' || !preg_match('/^.{1,62}@.{1,62}\.[a-zA-Z]{2,4}$/', $em) || $check > 0){
$error = "Please enter a valid email";
}else{
$success = true;
mysql_query("INSERT INTO survey_email
(email) VALUES('".$_POST['email']."' ) ")
or die(mysql_error());
header('Location: /survey-email-confirm.php');
}
}
答案 0 :(得分:1)
我认为你应该改变
if($em === '' || !preg_match('/^.{1,62}@.{1,62}\.[a-zA-Z]{2,4}$/', $em) || $check > 0){
到
if($em === '' || !preg_match('/^.{1,62}@.{1,62}\.[a-zA-Z]{2,4}$/', $em) || $check){
因为$ check的值不是数字。
答案 1 :(得分:0)
以下行返回一个数组,您正在检查数组> 0,
$check = mysql_fetch_assoc($sql);
我想你想获得行数以查看电子邮件是否已存在。得到它:
$numRows = mysql_num_rows($sql);
然后在IF
条件中使用它:
$numRows > 0