0

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

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

这是我的代码:

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

2 回答 2

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 的值不是数字。

于 2013-10-03T18:19:46.137 回答
0

下面的行返回一个数组,并且您正在检查数组 > 0,

$check = mysql_fetch_assoc($sql);

我猜您想获取行数以查看电子邮件是否已经存在。通过以下方式获取:

$numRows = mysql_num_rows($sql);

然后在IF条件下使用它:

$numRows > 0
于 2013-10-03T18:23:03.050 回答