一個好主意是在發佈表單之前運行AJAX檢查,即在客戶表單驗證狀態下。因此,用戶會知道張貼的電子郵件已經添加的形式...
Ajax解決方案將是前:
在窗體頁,具有類似於此的jQuery函數:
添加的jQuery與驗證插件:
<script type="text/javascript" src="/js/jquery.1.7.2.min.js"></script>
<script type="text/javascript" src="/js/jquery.validate.min.js"></script>
<script type="text/javascript">
jQuery.validator.addMethod("emailunique",function(value){
return eval($.ajax({
url: 'phptocheckunique.php',
data: "email="+value,
type: 'post',
async: false
}).responseText);
}, 'Email address already exists, must be unique!');
$(function() {
$('#yourform').validate();
});
</script>
然後在你的形式類添加到電子郵件輸入字段:
<input type="text" name="email" value="" size="30" class="required email emailunique" />
然後爲了檢查數據庫(使用$ _POST ['email']發佈的郵件地址,創建一個單獨的PHP腳本,類似於上面的函數(BUT SECURE!),如果已經有電子郵件,則返回TRUE。
phptocheckunique.php:
<?php
$dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$sth = $dbh->prepare("SELECT FROM users WHERE email = ?");
$sth->execute(mysql_real_escape_string($_POST['email']));
if ($sth->rowCount() > 0):
return true;
else:
return false;
endif;
但是,如果你還在用你的方法,加在最後,如果常規的ELSE語句,那麼你只會增加人,如果電子郵件是獨一無二的......還有你的代碼是非常不安全的,你應該考慮使用PDO。
請確保您在使用SQL字符串http://en.wikipedia.org/wiki/SQL_injection之前清理您的用戶輸入,或者更好地使用帶PDO的參數化查詢http://php.net/manual/en /book.pdo.php – acqu13sce
我們可以做些什麼來幫助您解決此問題(目前尚未解決...)? – jtheman