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

PHP Fetching encrypted value from addressbar not correct

您好,我有一个邮件程序在我的网站上有一个 link,link 是一个加密数据,如果我的加密数据有一个“+”号,主要问题是获取部分它不包含在获取的数据中,请参见此处的数据示例:

index.php?s=NER4gXPSuaads+Cmb8LANA==

这是带 + 号的 link 但是从我的 firebase 控制台 如您所见,“+”符号不再存在,而是变成了白色 space。 我读过一些关于 php 的 urldecode 的文章,它说所有加号 ('+') 都被解码为 space 字符。所以我在想这可能与此有关..有解决办法吗?

这是我尝试获取它的方式,供您参考

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

还有其他信息加密是在 AES 上.. 提前致谢

要正确设置和获取 "s",您需要在 URL 上设置它时对其进行 urlencode() 并在获取它时对其进行 urldecode()。

在我看来 "s" 在 URL 上设置时可能没有被 URL 编码。

好的,感谢@cerebriform 的评论,我已经找到了我要找的东西

这是我的做法

$refenc = base64_encode($refence);

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

这是最终代码:

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

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

感谢大家的意见