【问题标题】:how pass base64encode characters in codeigniter url?如何在codeigniter url中传递base64encode字符?
【发布时间】:2012-11-01 06:43:11
【问题描述】:

我有这样的网址http://domain/home/activate/MzU=.the 参数

 "MzU=" = base64encode($data)

我无法使用此参数打开此 URL。 像这样的错误!"The URI you submitted has disallowed characters." 如何在 codeigniter url 中传递 base64encode 字符?

【问题讨论】:

  • 为什么,会发生什么? data 的 bug 有多大?
  • $data 是一个整数。 activate 是函数,mzu= 是参数
  • 好的(GET 参数的最大长度有限制)。那么会发生什么,什么不起作用?你在哪里得到什么错误?
  • 将其作为urlencode(base64encode($data)) 传递。您还可以将= 添加到application/config/config.php 中的配置变量$config['permitted_uri_chars']。但第一种方法更可取。
  • 谢谢air4x。现在代码工作正常。

标签: php codeigniter


【解决方案1】:

您可以创建具有以下功能的助手:

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;
}

【讨论】:

    【解决方案2】:

    请在您的应用程序/配置目录中的 config.php 文件中将字符“=”添加到 $config['permitted_uri_chars']

    【讨论】:

    • 在很多情况下,只在配置文件中添加字符是不够的。假设将 '@' 添加到 url,您必须在 system/core/Input.php 文件中可用的 _clean_input_keys($str) 函数中添加字符。
    猜你喜欢
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    相关资源
    最近更新 更多