5

可能重复:
在 URL 中传递 base64 编码的字符串

我正在创建一个将发送给用户的 url。用户然后单击该 URL,该 URL 告诉我用户是谁。

因此,我使用 base64 编码添加到此链接的所有数据。但是,当用户单击该链接时,他会被重定向到 404 页面,因为编码的 url 中包含“/”并且 zend 框架路由器没有找到任何路由。

有什么办法可以抑制'/'?我试过htmlentities了,但没有用。

4

2 回答 2

3

我强烈推荐Joe Riggs 的 Create URL Safe Encrypted String

提供的代码是程序化的,但转换为 OO 非常简单。我用它来做你正在做的事情,其中​​一些信息(通常是用户的电子邮件和 id 的哈希)被编码/加密,以便用户单击以激活他们的帐户。

您要查看的函数是url_base64_decodeand 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
于 2012-10-22T14:43:31.997 回答
-1

我认为您需要对chars+和. 尝试在您的 Base64 编码参数上使用。/=urlencode()

PS:顺便说一下,这些将是变化:+=> %2B/=>%2F==>%25

于 2012-10-22T14:19:56.167 回答