2013-10-03 37 views
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'); 
    } 
} 
+2

「現在停止工作」 爲...通過獲取呢?電腦本身着火了嗎?沒有效果?黑屏? –

+1

請注意,您的代碼對於SQL注入攻擊是全面開放的。這是一個好主意,閱讀和理解這一點:http://php.net/manual/en/security.database.sql-injection.php – David

回答

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){ 

因爲$檢查的值不會是數字。

+0

做到了!謝謝。 –

0

下面的行返回一個數組,你正在檢查陣列> 0,

$check = mysql_fetch_assoc($sql); 

我想你想的行數,看是否電子郵件已經存在。

$numRows = mysql_num_rows($sql); 

然後在IF條件下使用它:

$numRows > 0 
相關問題