如何在php脚本上验证电子邮件地址

问题描述:

如何向此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

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