簡體   English   中英

如果未確認電子郵件,則從數據庫中刪除用戶

[英]Delete user from database if email not confirmed

我目前正在基於注冊的網站上工作,並且我讓服務器在注冊后向用戶發送激活電子郵件。 您可以想象,這都是用PHP完成的,因此我正在使用mail()函數。

一旦用戶收到電子郵件並單擊激活鏈接,“用戶”表中的“活動”字段將設置為true,這一切都很好。 但是,如果用戶不確認其電子郵件地址,這就是問題所在,我該怎么辦?

我曾考慮過保留用戶注冊日期和時間之類的詳細信息,但是我不知道如何處理這些數據。 在設定的時間后,服務器如何自動從數據庫中刪除用戶?

我想這就是我要問的,但老實說,我不知道通常的協議...

結論:由於Cron適用於基於Unix的服務器,因此我不得不繼續使用它,但是我發現非常有趣的是,我可以使用Windows內置的Windows Task Scheduler。 這至少意味着我可以在托管任何服務器之前在PC上對其進行測試。 謝謝你們

您絕對應該存儲發送激活鏈接的日期和時間。

確實沒有一種方法可以告訴服務器自動刪除過時的用戶數據,但是編寫自己的代碼很容易。 假設您有權訪問服務器上的cron,則可以將cronjob設置為每天晚上2點運行(例如),並執行PHP腳本來搜索數據庫,以查找在X天前已發送鏈接但從未確認的用戶它

我認為解決方案是在發送郵件時存儲時間戳。 現在每15分鍾運行一次cron,它將檢查哪些值的時間戳超過24小時或您想要的任何時限,然后將其從數據庫中刪除

只需在index.php文件中調用以下代碼即可。 (為什么使用index.php?-因為每次都需要它,並且可以“充當” cronjob。)

(只是偽代碼-可能需要一些調整!)mysql_query(“從用戶處於活動狀態的用戶刪除='false'AND registerTime <(NOW-60 * 60 * 24 * 7)”)

這將刪除7天內未激活的所有用戶。

我認為這只是一個構想,您可以在此基礎上繼續前進。

您應該研究每天運行的cronjobs 只需將用戶注冊的時間與數據庫中的字段一起輸入即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM