如何获取已在使用的邮件的错误消息?

时间:2014-12-27 20:33:00

标签: php email

如何操作,以便人们无法多次使用相同的电子邮件地址注册。所以他们反而得到错误。喜欢"抱歉,这封电子邮件已经在使用"

这是我的代码:

<?php

if(isset($_POST["submit"])){

  if(!empty($_POST['user']) && !empty($_POST['pass'])&& !empty($_POST['mail'])) {
    $user=$_POST['user'];
    $pass=$_POST['pass'];
    $mail=$_POST['mail'];

    $con=mysql_connect('localhost','root','123') or die(mysql_error());
    mysql_select_db('ProjectC') or die("cannot select DB");


    $query=mysql_query("SELECT * FROM login WHERE username='".$user."'");
    $numrows=mysql_num_rows($query);
    if($numrows==0)
    {
      $sql="INSERT INTO login(username,password,mail) VALUES('$user','$pass','$mail')";

      $result=mysql_query($sql);


      if($result){
        echo "Account Successfully Created";
      } else {
        echo "Failure!";
      }

    } else {
      echo "That username already exists! Please try again with another.";
    }

  } else {
    echo "All fields are required!";
  }
}

?>

2 个答案:

答案 0 :(得分:1)

有几件事:

  1. 当您可以枚举列名时,请不要使用SELECT *
  2. 获取结果集。 MySQL对于未获取结果的集合并不好。
  3. 取代SELECT something FROM table WHERE condition执行SELECT COUNT(*) FROM table WHERE condition,取得一行结果集,然后查看计数。
  4. 考虑在mail列上添加唯一约束。然后,该列中包含重复的插入将失败。
  5. 请勿使用mysql_ API,而是使用mysqli_PDOmysql_已被弃用,因为它非常不安全。

答案 1 :(得分:0)

您需要在数据库表上设置UNIQUE约束,以便查询失败。

ALTER TABLE login ADD CONSTRAINT unique_email UNIQUE (mail)

运行此查询一次(或者从phpMyAdmin等数据库管理器工具设置唯一约束)将使插入查询失败并生成错误。