Проверка электронной почты в PHP 5.2? - PullRequest
0 голосов
/ 27 марта 2012

Привет, я получаю сообщение об ошибке при вводе проверок для электронной почты в PHP5.2, см. Мой код ниже: я вызвал checkemail () и написал функцию checkemail () в скрипте.но я получаю сообщение об ошибке типа Ошибка: повторяющаяся запись для ключа 'PRIMARY' , так как я объявил идентификатор электронной почты в качестве первичного ключа.когда я помещаю что-либо в идентификатор электронной почты, тогда это принимает в базе данных.Я думаю, что функция не выполняется должным образом.Руководство, если есть подходящие решения. Если требуются какие-либо детали, то дайте мне знать.

<head>
<script>
  function checkEmail()
  {
    $strEmail= mysql_real_escape_string($_POST['email']);
    if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $strEmail))
    {
      return true;
    }
    else
    {
      return false;
    }
  }
</script>
</head>
<body>
  <div class="container">
    <section id="content">
      <form name="form1" method="post" action="check_register.php">
        <div>
          <input type="text" placeholder="Enter username" required="" id="uname" name="uname"/>
        </div>
        <div>
          <input type="text" placeholder="Enter Email-id" required="" id="email" name="email" onfocus="checkEmail('email');"  />
        </div>
        <div>
          <input type="password" placeholder="Enter Password" required="" id="pass" name="pass"/>
        </div>
        <div>
          <input type="password" placeholder="Repeat Password" required="" id="rpass" name="rpass" onfocus="checkPassword(document.getElementById('pass'), this);" oninput="checkPassword(document.getElementById('pass'), this);"/>
        </div>
        <div>
          <input type="text" placeholder="Enter country" required="" id="country" name="country"/>
        </div>
        <div>
          <input type="submit" value="Register"  />
        </div>
      </form>
    </section>
  </div>
  <script src="form-validation.js"/></script>
</body>

Ответы [ 2 ]

1 голос
/ 27 марта 2012

да, почему не использовать filter_var ,

filter_var ($isEmail, FILTER_VALIDATE_EMAIL);

И eregi (Posix Regex) устарела как PHP 5.3.0. PHP-руководство

1 голос
/ 27 марта 2012

Проверяете ли вы, что письмо уже существует в базе данных, прежде чем пытаться вставить его? Я думаю, что ваша проблема здесь. Не имеет значения html5 или проверка адреса электронной почты.

И, кстати, никогда не используйте <script> balise для выполнения php-кода. Вместо этого используйте <?php /* your code here */ ?>.

Вы также можете использовать встроенную функцию PHP для проверки вашей электронной почты, используя filter_var, проверьте первый пример: http://www.php.net/manual/en/filter.examples.validation.php

...