新服务器设置阻止重复的电子邮件脚本工作

时间:2013-10-03 18:13:55

标签: php mysql email

我有一个简单的表单,我试图阻止同一封电子邮件被输入两次并且是有效的电子邮件。我有它的工作,但后来我的网站转移到一个新的服务器,现在它停止工作。

我是否需要在新服务器上更改或查找某些配置才能使其正常工作?

这是我的代码:

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');
    }
}

2 个答案:

答案 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