2010-12-10 80 views
1

在我們的網站上,我們設立了賬戶激活郵件與下面的教程(CakePHP中):CakePHP的帳戶激活電子郵件 - 找不到地址在服務器

http://www.jonnyreeves.co.uk/2008/06/cakephp-activating-user-account-via-email/

在我們的直播現場,似乎激活工作的大部分,但有些人在點擊激活電子郵件鏈接激活其帳戶時收到以下錯誤:

錯誤:未找到請求的地址'/ users/activate/36/10a1a794'在這臺服務器上。

這對我來說很奇怪,因爲鏈接看起來很好:「用戶」控制器,「激活」操作,user_id = 36和哈希碼= 0a1a794。不知道爲什麼這個錯誤發生。我閱讀的一件事是清除緩存文件夾中的文件,但似乎沒有任何改變。請幫忙謝謝!

+2

好了,我們不知道或者沒有能夠通過將其更改爲看你的應用程序或日誌文件... – deceze 2010-12-10 09:24:55

回答

1

激活哈希的有效性有限(同一天)。

因此,如果在任何月份的第一天發送激活郵件,它將在第一天的下午11:59之前有效。該鏈接在上午12:00之後不會工作(技術上每個月的第二天)。

希望有所幫助。

+0

我其實去除白天的事情,只是使用的電子郵件地址: 回報SUBSTR(安全性: :hash(Configure :: read('Security.salt')。$ this-> field('email')),0,8); 這應該永久有效,但似乎仍然會引發同樣的問題。有誰知道0和8旗是做什麼的? – 2010-12-10 20:28:26

+0

0 - 8是你的例子中子字符串的長度(10a1a794)。向前看問題,檢查用戶點擊鏈接時發送給控制器的操作。首先檢查控制器動作是否有兩個參數 – 2010-12-11 13:55:59

+0

.... function whatever(id = null,signature = null),如果它接下來檢查在此動作中生成的簽名是否與發送電子郵件的簽名類似。提示#複製兩個操作生成簽名的代碼,並在兩個操作上使用一個ID(本例中爲36),並檢查它們是否生成相同的輸出。這是整個想法。希望有所幫助。 – 2010-12-11 14:04:17

0

是的,這就是Josh R所說的,哈希計算在同一天,這是一個非常糟糕的主意。

您應該停止散列日期或驗證兩個值:一個用於今天的日期,一個用於昨天的日期。

此外,建議:不要只是去那裏複製文件,嘗試從中學習一些東西,請按照自己的方式去做。你會學到更多。

相關問題