可能重复:
在 URL 中传递 base64 编码的字符串
我正在创建一个将发送给用户的 url。用户然后单击该 URL,该 URL 告诉我用户是谁。
因此,我使用 base64 编码添加到此链接的所有数据。但是,当用户单击该链接时,他会被重定向到 404 页面,因为编码的 url 中包含“/”并且 zend 框架路由器没有找到任何路由。
有什么办法可以抑制'/'?我试过htmlentities
了,但没有用。
可能重复:
在 URL 中传递 base64 编码的字符串
我正在创建一个将发送给用户的 url。用户然后单击该 URL,该 URL 告诉我用户是谁。
因此,我使用 base64 编码添加到此链接的所有数据。但是,当用户单击该链接时,他会被重定向到 404 页面,因为编码的 url 中包含“/”并且 zend 框架路由器没有找到任何路由。
有什么办法可以抑制'/'?我试过htmlentities
了,但没有用。
我强烈推荐Joe Riggs 的 Create URL Safe Encrypted String。
提供的代码是程序化的,但转换为 OO 非常简单。我用它来做你正在做的事情,其中一些信息(通常是用户的电子邮件和 id 的哈希)被编码/加密,以便用户单击以激活他们的帐户。
您要查看的函数是url_base64_decode
and url_base64_encode
,其中某些字符被重写为 url 安全(例如,将其删除/
并替换为~
)。
[编辑]
这是基于上述代码的我班级的键盘:http: //codepad.org/lzevA4k1
用法:
$cryptUtil = new RPK_Crypt();
$string = 'Unencrypted string';
$eString = $cryptUtil->encrypt($string);
$dString = $cryptUtil->decrypt($eString);
var_dump($dString == $string); //true
我认为您需要对chars+
和. 尝试在您的 Base64 编码参数上使用。/
=
urlencode()
PS:顺便说一下,这些将是变化:+
=> %2B
,/
=>%2F
和=
=>%25