使用base64编码的字符串URL

时间:2012-10-22 13:33:53

标签: php zend-framework url base64

  

可能重复:
  Passing base64 encoded strings in URL

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

所以我使用base64编码添加到此链接的所有数据。但是,当用户点击链接时,他被重定向到404页面,因为编码的网址中有“/”,而zend框架路由器找不到任何路由。

任何方式我都可以压制'/'?我试过了htmlentities,但它没有用。

2 个答案:

答案 0 :(得分:3)

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

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

您要查看的功能是url_base64_decodeurl_base64_encode,其中某些字符会被重写为url safe(例如,删除/并将其替换为{{1} }})。

[编辑]

以下是基于上述代码的我的类的键盘:http://codepad.org/lzevA4k1

用法:

~

答案 1 :(得分:-1)

我认为您需要对字符+/=进行网址编码。尝试在Base64编码参数上使用urlencode()

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