2016-09-07 45 views
0

我正在使用密碼系統,發送電子郵件,他們必須點擊鏈接才能進入密碼重置頁面。

鏈接中有一些信息是加密的,然後據說在另一端進行了解密。 這裏是一個例子 http://www.somewebpage.com?p=8e428904890e31a93c563e1f18c11ff6&c=U2FsdGVkX1+LdNFKzCZxRAGPYYA9MGzAhAUh/wLJ3T4=

現在我用$ _GET ['c']來獲得加密數據。 然後我使用我的解密代碼對其進行解密。

現在,這裏的問題是 如果我這樣做,它的工作原理

Decrypt($key,"U2FsdGVkX1+LdNFKzCZxRAGPYYA9MGzAhAUh/wLJ3T4="); 

,這讓我回到我原來的文本。

但如果我這樣做。它不起作用

Decrypt($key,$_GET['c']); 

它只是給我mangled字符。

問題是爲什麼當我使用$ _GET ['c']時,我的加密例程不工作,如果我直接將字符串放入工程中,則工作正常。

是網址添加隱藏的字符或東西? 如果是的話,我可以剝離添加的任何東西。

+1

使用'urldecode'解密 – RamRaider

+2

什麼是'回聲$ _GET [ 'C']'過嗎? –

+2

您需要正確編碼您輸入到URL中的值。 '='顯然在查詢字符串中有特殊的含義。 '&c = ... ='顯然會引起一些眉毛。你在哪裏產生該網址...? – deceze

回答

2

加密數據包含某些不會正確通過瀏覽器的字符。

當你生成密鑰嘗試使用函數urlencode()來

echo '<a href="mycgi?foo=', urlencode($encryptdata), '">'; 
+0

我現在就來看看,並讓你知道 –

+0

這工作。我謝謝你。已經做了幾年的PHP,但不需要以前發送一個編碼網址。 –

+0

歡迎您:) – Suvichak