Codeigniter:您提交的 URI 包含不允许的字符

Posted

技术标签:

【中文标题】Codeigniter:您提交的 URI 包含不允许的字符【英文标题】:Codeigniter: URI you submitted has disallowed characters 【发布时间】:2015-06-29 03:03:43 【问题描述】:

我的网址是:

https://example.com/c3dlZXRfcmFqdmk5MUBob3RtYWlsLmNvbQ=

当我删除 = 时,它工作正常。

我有这个在config.php

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

错误:

The URI you submitted has disallowed characters.

如何允许=== 登录URI?

我已经尝试过改变这个:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-='; // added = sign at the end

【问题讨论】:

【参考方案1】:

在 /project-folder-name/application/config/config.php 中配置这个变量:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-@\=';

它也适用于@字符

【讨论】:

不应该省略system吗?我认为路径不正确。它应该是 project_folder/application/config/config.php【参考方案2】:

config.php 文件中的更改

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-\=';

$config['enable_query_strings'] = TRUE;

它对我有用。自己试试吧!

【讨论】:

$config['enable_query_strings'] = TRUE; - 没有帮助并创造了更多的错误。在允许的 uri 字符下添加字符对我有用。【参考方案3】:

在 CI 打开目录中 project-folder-name/application/config/config.php 并配置变量$config['permitted_uri_chars']

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-@\=';

这适用于所有特殊字符

【讨论】:

【参考方案4】:

首先,您必须对传入 url 的 id 进行编码,然后在控制器中对 id 进行解码。 查看:

<a href="<?php echo base_url()?>Cinvoice/imei_invoice/<?php echo base64_encode($invoice_list['invoice_id']); ?>" class="btn btn-danger btn-sm" data-toggle="tooltip" data-placement="left" title="Final Invoice By Ware House">Primary Order</a>

控制器:

当你调用库中的函数时

$content = $CI->linvoice->get_imei(base64_decode($invoice_id)); 

【讨论】:

【参考方案5】:

我在地址栏中找到了这个

O9SPVKocvz6Ph7mT+ulXzMhYV2VDao5gfL9BWtdMKdOBL4PnSLc5E8nIBYnj4hdTpaBUUgFmMX+3X24CfzZ3Rw==

config.php 文件的变化

使用这个

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-\=+';

工作正常

【讨论】:

消息:preg_match():编译失败:偏移量 16 处的字符类范围乱序文件名:core/URI.php 对我不起作用.. CI v3.1.5 你想做什么? 您需要转义字符串中的破折号(通过在其前面放置一个反斜杠),因为它在正则表达式中使用。这意味着它需要一个裸(未转义)破折号来指示字符范围。 你能告诉我你尝试做什么的例子,这样我就可以帮助你兄弟【参考方案6】:

在我的 CI 版本 3.11 中,我解决了这个问题:

application/config/config.php我改变了

$config[‘permitted_uri_chars’] = ‘a-z 0-9~%.:_\\-‘;

$config['permitted_uri_chars'] = '';

问题解决了。

我的网址是这样的:example.com/product/45/kotlin_toturial(by_avasam.ir) _in_99_lessons

.

【讨论】:

【参考方案7】:

我已经更改了 config.php 文件

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-=&';

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-\=&';

$config['enable_query_strings'] = TRUE;

【讨论】:

以上是关于Codeigniter:您提交的 URI 包含不允许的字符的主要内容,如果未能解决你的问题,请参考以下文章

使用 CodeIgniter 分页时丢失 URI 段

无法访问codeigniter控制器中的uri段

无法在 codeigniter 中提交数据

检查 codeigniter 查询错误,而不是向用户显示它们

如何在 CodeIgniter 中设计用户友好的 URI?

CodeIgniter:提交无效表单后如何保留值?