2012-03-27 92 views
0

您好,我在驗證PHP5.2中的電子郵件驗證時遇到錯誤 請參閱我的下面的代碼:我在腳本中調用了checkemail()和書寫函數checkemail()。但我得到錯誤,如錯誤:重複條目''爲'PRIMARY'鍵',因爲我已經聲明電子郵件ID爲主鍵。當我把任何東西放在電子郵件ID然後它接受數據庫。我認爲功能沒有正確執行。指導如果有適當的解決方案。如果需要任何細節,然後讓我知道。在PHP 5.2中驗證電子郵件?

<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> 
+0

什麼樣'我+電子郵件@ xxxxx.travel'地址? – Toto 2012-03-27 15:39:14

回答

1

您是否在嘗試插入郵件之前檢查郵件是否已存在於數據庫中?我認爲你的問題在這裏。無關html5或電子郵件的驗證。

順便說一下,請不要使用<script>應答器執行php代碼。改爲使用<?php /* your code here */ ?>

您還可以使用內置的PHP函數來驗證使用filter_var您的電子郵件,檢查第一個例子:http://www.php.net/manual/en/filter.examples.validation.php

+0

j0k是正確的:你得到的錯誤信息是由於你當前持有的數據 - 與驗證無關 - 順便說一句正則表達式非常差。考慮:/^[a-z0-9 \ ._%+!$&* =^|〜#%''?{}/\ - ] + @([a-z0-9 \ - ] + \。) {1,}([az] {2,6})$/gi(這也不是一個完整的解決方案) – symcbean 2012-03-27 09:17:46

1

是啊,爲什麼不使用filter_var

filter_var ($isEmail, FILTER_VALIDATE_EMAIL); 

而eregi(POSIX正則表達式)已被棄用爲PHP 5.3.0。 php-manual