PHP从地址栏中获取加密值不正确

时间:2015-02-27 01:39:51

标签: php url encryption

您好我有一个邮件链接到我的网站链接是一个加密数据,主要问题是提取部分,如果我的加密数据有一个“+”符号,它不包括在提取的数据请参阅此处的数据示例:

index.php?s=NER4gXPSuaads+Cmb8LANA==

这是带有+号的链接 但是从我的firebase控制台 enter image description here 正如你所看到的那样,“+”符号不再存在,而是变成了一个空白区域。 我已经阅读了一些关于php urldecode的文章,它说所有Plus符号('+')都被解码为空格字符。所以我认为它可能与此有关......是否有解决方案呢?

以下是我尝试抓取它以供参考的方法

    if($_GET['s']!='success') {
   $ref =htmlspecialchars($_GET['s']);
} else {
   $ref = "direct";
}

另外还有关于AES的加密信息.. 提前致谢

2 个答案:

答案 0 :(得分:4)

设置和获取" s"当你在URL上设置它时,你需要urlencode()它,并在你获取它时使用urldecode()它。

它在我看来像" s"在URL上设置时可能没有进行URL编码。

答案 1 :(得分:2)

好的,所以我已经设法找到了我正在寻找的东西感谢@ cerebriform的评论

我是这样做的

$refenc = base64_encode($refence);

$refence是AES加密的结果,因此在将其作为邮件发送之前它已经被重新编码,但这次使用base64_encode()。那么它看起来如何,我会告诉你$final = base64_encode($rdfence);。之后,它将被发送到我的邮件发送者所希望发送到的电子邮件..我的网站如何设法消除我的问题是从我使用的网址base64_decode()检索链接...然后它解码另一个解码器将发生AES解密脚本现在解密它以从数据库中获取原始数据

这是最终的代码:

  if($_GET['s']!='success') {
 $d = base64_decode($_GET['s']);
 $aes->setData($d);
 $ref=$aes->decrypt();

} else {
   $ref = "No Id";
}

感谢输入人员