1

当我加载我的控制器时,我有这个:

$this->load->library('encrypt');

$get = null;
parse_str($_SERVER['QUERY_STRING'],$get);
$email = $this->encrypt->decode($get["acc"]); // e.g.  www.lol.com/?acc=troll

我的控制器是这样调用的:

$this->load->library('encrypt');
$this->load->helper("url");
$user = $this->input->post('email', true);

$encrypted_string = $this->encrypt->encode($user);
redirect('account/viewaccount?acc='.$encrypted_string);

网址如下所示:

http://localhost/CodeIgniter/index.php/account/viewaccount?acc=+fgSAs6X7ysW6XDjFVw//9RGVbY751zZv1LQ44yYBjhVuzI1BC1t9BbZCIUdX5lpYA==

但问题是,当我编码时我得到一个值,但后来,当我解码这个巨大的值时(我可以通过测试完美地接收到这个值)它什么也不返回,只是 NULL。

为什么会这样?

谢谢你

4

3 回答 3

3

加密的输出不是 URL 安全的。替换这个:

redirect('account/viewaccount?acc='.$encrypted_string);

redirect('account/viewaccount?acc='.urlencode($encrypted_string));

然后urldecode()在另一端。

于 2012-11-10T22:14:13.750 回答
0

尝试加密字符串并解密。错误可能不是解密或加密

于 2012-11-10T21:51:59.083 回答
0

编码形式不是 url 安全的,请尝试使用其他一些编码技术urlencodeencode.

于 2012-11-10T21:56:07.427 回答