如何在CodeIgniter中传递经过base64编码的字符到URL中?

3

我有一个像这样的URL:http://domain/home/activate/MzU=。其中的参数

 "MzU=" = base64encode($data)

我无法使用这个参数打开此URL。 错误信息如下:"您提交的URI包含被禁止的字符。" 在codeigniter中如何传递base64编码的字符到URL中?


为什么,发生了什么?data有多严重的错误? - Pekka
$data 是一个整数。activate 是函数,mzu=是参数。 - crynaldo madrid
好的(GET参数有最大长度限制)。那么会发生什么,哪些地方不起作用?你在哪里得到了什么错误? - Pekka
2
将其传递为 urlencode(base64encode($data))。你也可以在 application/config/config.php 中的 $config['permitted_uri_chars'] 配置变量中添加 =。但首选第一种方法。 - air4x
谢谢air4x。现在代码运行正常。 - crynaldo madrid
2个回答

2
您可以使用以下函数创建一个辅助程序:
function url_query_encode($array = array())
{
    return str_replace('/', '_', rtrim(base64_encode(gzcompress(serialize($array))), '='));
}


function url_query_decode($str = '')
{
    return (is_string($str) && strlen($str)) ? @unserialize(gzuncompress(base64_decode(str_replace('_', '/', $str)))) : FALSE;
}

1
请在您的config.php文件中的$config ['permitted_uri_chars']中添加字符“=”,该文件位于您的应用程序/ config目录中。

2
在许多情况下,仅向配置文件添加字符是不够的。假设要向URL添加'@',则必须在system/core/Input.php文件中的_clean_input_keys($str)函数中添加字符。 - Hasib Tarafder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接