2013-05-28 22 views
-2

我想這樣如果電子郵件存在數據庫中不應該有可能再次創建數據庫。它應該只有可能再次維持自己!只有一個用戶在數據庫中

if($stmt = $this->mysqli->prepare("INSERT INTO `bruger` (`rank`, `email`, `adgangskode`, `navn`, `efternavn`, `profil_img`) VALUES (?, ?, ?, ?, ?, ?)")) 
     { 
      $stmt->bind_param('isssss', $rank, $email, $adgangskode, $navn, $efternavn, $profil_img); 

      $rank = 1; 
      $email = $_POST["email"]; 
      $adgangskode = sha1($_POST["password_adgangskode_1"]); 
      $navn = $_POST["fornavn"]; 
      $efternavn = $_POST["efternavn"]; 
      $profil_img = $pb; 

      $stmt->execute(); 

      $navn = $_POST["navn"]; 
      $til = $_POST["email"]; 
      $password = $_POST["password_adgangskode_1"]; 


      $fra = "blabla.dk - Opret bruger <" . "[email protected]" . ">"; 
      $til = $_POST["email"]; 
      $emne = "Velkommen til blabla.dk"; 

      $besked = file_get_contents('mail_opret.php'); 

      $besked = str_replace("%%navn", $navn, $besked); 
      $besked = str_replace("%%brugernavn", $til, $besked); 
      $besked = str_replace("%%password", $password, $besked); 

      $headers = "MIME-Version: 1.0\n"; 
      $headers .= "Content-type: text/html; charset=UTF-8 \n"; 
      $headers .= "From: " . $fra . "\n"; 

      mail($til, $emne, $besked, $headers); 

      ?> 
      <div class="article-main-content"> 
      <div class="alert-message" style="background-color:#77b01e;"><span class="icon-text">&#10003;</span><span class="alert-content">Din bruger er blevet opret og du få en email fra os <a href="#" class="destroy-button"></a></div> 
      </div> 
      <?php 

      $stmt->close(); 


     } 
     else 
     { 
      echo 'Der opstod en fejl i erklæringen: ' . $this->mysqli->error; 
     } 

它應該使用/訪問者在數據庫中的用戶,所以它不能再次創建電子郵件。那麼它應該只能做到一次!

我應該怎麼做?

EIDT HERE!

foreach($this->mysqli->query("SELECT * FROM bruger WHERE email='$email'") as $row) { 
     if ($row['email'] !== $email) { 
      $pb = null; 

      include "fun_filer/img/class.upload.php"; 
      $handle = new Upload($_FILES["file"]); 

      if($handle->uploaded) 
      { 
       $handle->image_resize = true; 
       $handle->image_ratio_crop = true; 
       $handle->image_y = 75; 
       $handle->image_x = 75; 
       $handle->Process("images/bruger"); 
       $pb = $handle->file_dst_name; 
      } 

      if($stmt = $this->mysqli->prepare("INSERT INTO `bruger` (`rank`, `email`, `adgangskode`, `navn`, `efternavn`, `profil_img`) VALUES (?, ?, ?, ?, ?, ?)")) 
      { 
       $stmt->bind_param('isssss', $rank, $email, $adgangskode, $navn, $efternavn, $profil_img); 

       $rank = 1; 
       $email = $_POST["email"]; 
       $adgangskode = sha1($_POST["password_adgangskode_1"]); 
       $navn = $_POST["fornavn"]; 
       $efternavn = $_POST["efternavn"]; 
       $profil_img = $pb; 

       $stmt->execute(); 

       $navn = $_POST["navn"]; 
       $til = $_POST["email"]; 
       $password = $_POST["password_adgangskode_1"]; 


       $fra = "blabla.dk - Opret bruger <" . "[email protected]" . ">"; 
       $til = $_POST["email"]; 
       $emne = "Velkommen til blabla.dk"; 

       $besked = file_get_contents('mail_opret.php'); 

       $besked = str_replace("%%navn", $navn, $besked); 
       $besked = str_replace("%%brugernavn", $til, $besked); 
       $besked = str_replace("%%password", $password, $besked); 

       $headers = "MIME-Version: 1.0\n"; 
       $headers .= "Content-type: text/html; charset=UTF-8 \n"; 
       $headers .= "From: " . $fra . "\n"; 

       mail($til, $emne, $besked, $headers); 

       ?> 
       <div class="article-main-content"> 
       <div class="alert-message" style="background-color:#77b01e;"><span class="icon-text">&#10003;</span><span class="alert-content">Din bruger er blevet opret og du få en email fra os <a href="#" class="destroy-button"></a></div> 
       </div> 
       <?php 

       $stmt->close(); 


      } 
      else 
      { 
       echo 'Der opstod en fejl i erklæringen: ' . $this->mysqli->error; 
      } 
     } 
     else 
     { 
     ?> 
     <div class="article-main-content"> 
    <div class="alert-message" style="background-color:#c22525;"><span class="icon-text">&#9888;</span><span class="alert-content">Error!</span><a href="#" class="destroy-button"></a></div> 
    </div> 
     <?php 
     } 
     } 

這裏:

if ($stmt = $this->mysqli->prepare("SELECT `id` FROM `bruger` WHERE `email`")) 
     { 
     $stmt->bind_param('s', $email_indhold); 
     $email_indhold = $_POST["email"]; 


     $stmt->execute(); 
     $stmt->store_result(); 
     $stmt->bind_result($id); 
     $stmt->fetch(); 
     $count = $stmt->num_rows; 
     $stmt->close(); 

     if($count >= 1) 
     { 
      $pb = null; 

      include "fun_filer/img/class.upload.php"; 
      $handle = new Upload($_FILES["file"]); 

      if($handle->uploaded) 
      { 
       $handle->image_resize = true; 
       $handle->image_ratio_crop = true; 
       $handle->image_y = 75; 
       $handle->image_x = 75; 
       $handle->Process("images/bruger"); 
       $pb = $handle->file_dst_name; 
      } 

      if($stmt = $this->mysqli->prepare("INSERT INTO `bruger` (`rank`, `email`, `adgangskode`, `navn`, `efternavn`, `profil_img`) VALUES (?, ?, ?, ?, ?, ?)")) 
      { 
       $stmt->bind_param('isssss', $rank, $email, $adgangskode, $navn, $efternavn, $profil_img); 

       $rank = 1; 
       $email = $_POST["email"]; 
       $adgangskode = sha1($_POST["password_adgangskode_1"]); 
       $navn = $_POST["fornavn"]; 
       $efternavn = $_POST["efternavn"]; 
       $profil_img = $pb; 

       $stmt->execute(); 

       $navn = $_POST["navn"]; 
       $til = $_POST["email"]; 
       $password = $_POST["password_adgangskode_1"]; 


       $fra = "blabla.dk - Opret bruger <" . "[email protected]" . ">"; 
       $til = $_POST["email"]; 
       $emne = "Velkommen til blabla.dk"; 

       $besked = file_get_contents('mail_opret.php'); 

       $besked = str_replace("%%navn", $navn, $besked); 
       $besked = str_replace("%%brugernavn", $til, $besked); 
       $besked = str_replace("%%password", $password, $besked); 

       $headers = "MIME-Version: 1.0\n"; 
       $headers .= "Content-type: text/html; charset=UTF-8 \n"; 
       $headers .= "From: " . $fra . "\n"; 

       mail($til, $emne, $besked, $headers); 

       ?> 
       <div class="article-main-content"> 
       <div class="alert-message" style="background-color:#77b01e;"><span class="icon-text">&#10003;</span><span class="alert-content">Din bruger er blevet opret og du få en email fra os <a href="#" class="destroy-button"></a></div> 
       </div> 
       <?php 

       $stmt->close(); 


      } 
      else 
      { 
       echo 'Der opstod en fejl i erklæringen: ' . $this->mysqli->error; 
      } 
     } 
     else 
     { 
     ?> 
     <div class="article-main-content"> 
    <div class="alert-message" style="background-color:#c22525;"><span class="icon-text">&#9888;</span><span class="alert-content">Error</span><a href="#" class="destroy-button"></a></div> 
    </div> 
     <?php 
     } 
     } 
+4

設置電子郵件字段設置爲MySQL中的唯一索引... – crush

+1

簡單的將它添加到數據庫之前只檢查使用select查詢這個電子郵件的ID是否存在,如果沒有,然後插入或存在拋出錯誤或做任何你想做的事情...... –

+0

還有一種方法可以防止用戶使用'php if/else'語句添加用戶。你在尋找類似的東西嗎? – Tom

回答

0

只是執行與選擇的查詢檢索與給定的電子郵件用戶。 當行數等於0時,您可以從那裏繼續並執行插入操作。 否則,顯示錯誤「已經註冊的電子郵件」。

在電子郵件字段中添加唯一索引也是首選。

+1

這是兩次往返服務器。只需將電子郵件字段設置爲唯一索引,只需要一次往返服務器。 – crush

+0

是的,但您可以通過這種方式顯示更具可讀性的錯誤 – randomizer

+1

您可以通過另一種方式顯示相同的錯誤...插入失敗,存在衝突。很簡單。 – crush

1

您可以從數據庫中查找電子郵件,看它是否與$_POST上的電子郵件相匹配。如果不行,你可以繼續,如果不行,你可以顯示一個錯誤。

foreach($this->mysqli->query("SELECT * FROM Users WHERE email='$email'") as $row) { 
    if ($row['email'] !== $email) { // if email doesn't equal to the email given 
    // your code goes here 
    } else { 
    // you can put an error code here 
} 
} 

如果你不喜歡使用這個,只需設置在表中的電子郵件字段作爲「獨一無二」
編輯:由於以下評論說@NielsKeurentjes,最好同時使用(像上面並設置在表中的電子郵件字段作爲「獨一無二」一個PHP)

+0

應該在這裏使用準備好的語句。 – crush

+1

循環過度,只需做一次選擇並檢查行數。 – randomizer

+0

@randomizer好點。如果有任何匹配,那麼你知道電子郵件存在...不需要檢查每一個。 – crush

相關問題