2016-09-07 52 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