2013-04-30 40 views
0

如何向此pdo腳本添加電子郵件驗證。用戶在'textfield'中輸入他們的電子郵件地址。只是,如果輸入的電子郵件地址是不是我想要的數據庫,它重定向到fail.html如何在php腳本上驗證電子郵件地址

<?php 

$host=""; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name=""; // Database name 
$tbl_name="orders"; // Table name 
$email = $_POST['textfield']; 


     $db = new PDO('mysql:host='.$host. 
          ';dbname='.$db_name. 
          ';charset=UTF-8', 
        $username, $password); 
     $stmt = $db->prepare('SELECT * FROM `orders` WHERE `email`=:email LIMIT 1'); 
     $stmt->bindValue(':email', $email, PDO::PARAM_STR); 
     $stmt->execute(); 
     $result = $stmt->fetch(PDO::FETCH_ASSOC); 

     echo "The is: ".$result['name'].", and mail is: ".$result['email']." . Status: ".$result['status']; 


    ?> 
+0

[使用正則表達式驗證電子郵件地址]可能的重複(http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address) – 2013-04-30 16:21:26

+0

rowCount會告訴你它是否存在http://php.net/manual/en/pdostatement.rowcount.php – Waygood 2013-04-30 16:22:29

+0

添加if-else條件... – raidenace 2013-04-30 16:22:33

回答

2
if($stmt->rowCount()>0) 
{ 
    echo "The result is: ".$result['name'].", and mail is: ".$result['email']." . Status: ".$result['status']; 
} 
else 
{ 
    echo "Email not found in the database!"; 
} 

代替echo荷蘭國際集團的錯誤信息,您可以重定向到另一個頁面(只若無其事已經被髮送到瀏覽器):

header('Location: fail.html'); 

或者您也可以在文件中包含當前頁面顯示出來:

require 'fail.html'; 

或者你可以在表單中輸入字段使用它:

echo '<input name="login" type="text" value="' . $result['name'] . '>'; 

領域有其屬性設置爲登錄,這樣你就可以一次提交表單來引用它。

+0

謝謝。如果我想通過'」/>而不是echo「結果是:」。$ result ['名稱'] .......我將如何去改變驗證? – 2013-04-30 16:35:32

+0

看我的編輯到答案。 – Jocelyn 2013-04-30 16:46:54

+0

不知道爲什麼,但當我更換回聲「在數據庫中找不到電子郵件!」;與標題('Location:fail.html');它不會重定向,如果電子郵件是錯誤的 – 2013-04-30 16:50:46