2017-01-16 143 views
-1

我正在創建一個網站,您可以在其中創建帳戶。作爲註冊過程的一部分,我想向用戶的電子郵件地址發送激活電子郵件。我在想,這封電子郵件會包含一個用戶點擊的鏈接,這將激活帳戶,問題是我不知道如何創建鏈接以及如何工作。我將如何動態生成此鏈接以及如何激活帳戶?使用php電子郵件激活帳戶

感謝

+0

您正在使用數據庫,不是嗎?您可以爲用戶數據添加一個字段,並生成該值以外的鏈接。然後使用腳本來驗證與該值鏈接的人,這些人可以存儲在GET值中。自動發送郵件應該很難。你用什麼來發送郵件?像swiftmail的東西?然後使用該腳本將驗證值更改爲某物。像ACTIVIVATED等。 http://stackoverflow.com/questions/2293684/what-is-the-best-way-to-create-a-random-hash-string – Pingbeat

+0

是的,我是。我只是使用PHP腳本發送郵件,我只需要在我的腦海中獲得它的邏輯。你說的話很有道理,我想我會嘗試使用這種邏輯。 – EthanLewis

回答

2

當你正準備發送電子郵件,創建帳戶後,你將不得不添加到您的數據庫中的記錄,以驗證該帳戶,其中應包括該帳戶的ID和激活串(我會生成一個10至15個字符的隨機十六進制或字母數字字符串)。這個記錄不論是被激活還是數字(或二進制)1或0都應該有一個布爾值true或false。在發送電子郵件之前將其設置爲false。在電子郵件中的鏈接中發送此激活字符串和帳戶ID。

對於您創建的任何鏈接,您將需要單個頁面供他們使用,即activateaccount.php 從該文件內部,您可以接收$ _GET參數,也許$ _GET ['activation ']和$ _GET ['account_id']。在此頁面中,您將驗證激活和account_id是否都有效,並且它們是否相互匹配。如果沒有,那麼腳本不應該嘗試通過寫入數據庫來解決不匹配問題,因爲這可能會導致不希望的攻擊。如果它們都有效且匹配,則可以激活該賬戶。

也作爲Pingbeat建議,去Swiftmailer。我之前在許多項目中使用過它,並且可以確認它非常通用,速度快,記錄非常完善並且非常易於使用。

我希望這個建議有幫助。

+0

正是我所想到的,人們如何做到這一點。除了如何做實際的激活,但有很多方法.. +1這個想法。 :) – Pingbeat

+0

當然,有很多不同的方法。我相信像PHPBB這樣的高端項目會有更復雜的處理方式,並且可能更安全。例如,電子郵件地址也可以插入另一個$ _GET參數中,然後進行驗證,但在現實世界中,有人找出任何帳戶的激活號碼(如果是隨機生成的)的機會非常渺茫,因此驗證該電子郵件地址也不是必需的。 –

+0

你說得對。如果你想使用電子郵件,爲什麼。你可以使用md5來實現你不要以明文形式通過GET發送它 – Pingbeat