我使用此代碼作爲電子郵件確認腳本的一部分。它工作的很好,除非我找不出一種方法來區分何時有人提供了無效的電子郵件地址,以及何時他們只是刷新了頁面(即已經確認了他們的賬戶)。我能想到的唯一想法是在users
表中添加一個時間戳記字段,該表格始終得到更新,但我希望有更好的方法。我認爲REPLACE
會做的伎倆,但是,雖然email
是唯一的,它不是主要關鍵。mysql_affected_rows()解決方法?
if (isset ($email, $token, $correctToken)){
$success = FALSE; //Set the $success variable so that we don't get an error when testing for it later
if ($token == $correctToken) {
$confirm = mysql_query("UPDATE users
SET conf = 'TRUE'
WHERE email = '$email'");
if (mysql_affected_rows() == 1) {
echo "Thank you! Your email address is confirmed and your account is actived.";
$success = TRUE;
}
}
if (!$success) {
echo "There was a problem with the confirmation. Try the link in your email again or contact us at [email protected]";
// Send email to admin to notify of error
exit;
}
}
在此先感謝您的建議! Billy
編輯:$email
和$token
變量通過$ _GET或$ _POST提供,如果不明顯。
爲什麼不將它們重定向到單獨的頁面進行確認?如果成功,他們將無法刷新頁面。 – Aknosis 2012-01-12 15:48:36
我比添加到數據庫更喜歡那個選項。成功設置$ _SESSION變量怎麼辦?這應該工作,對吧? – JeepFreak 2012-01-12 15:52:46
重定向會阻止他們刷新,但如果他們再次點擊他們電子郵件中的鏈接呢?看到我的答案。 – andrewtweber 2012-01-12 15:57:10