不允许使用“@” Codeigniter URL 中的符号

发布于 2025-01-07 10:32:56 字数 265 浏览 1 评论 0原文

我正在尝试让 Codeigniter 接受 URL 中的“@”符号。我已将其作为以下允许的字符之一包含在内:

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

但我仍然收到他的错误消息:

Disallowed Key Characters.

除了“@”符号之外,其他所有字符似乎都工作正常。有什么想法吗?

谢谢!

I'm trying to get Codeigniter to accept the "@" symbol in a URL. I've included it as one of the permitted characters below:

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

Yet I continue to get his error message:

Disallowed Key Characters.

Every other character seems to be working fine except for the "@" symbol. Any ideas?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苏佲洛 2025-01-14 10:32:56

CodeIgniter 路由系统将您的 url 转换为将控制器、操作和参数定义为键/值。它检查键的值是否具有允许的字符,您可以使用 $config['permissed_uri_chars'] 进行配置,但您收到的错误消息与键本身有关,而不是与它的值有关。在这种情况下, $config['permissed_uri_chars'] 无法帮助您允许使用 @ 符号。您将在 system/core/input.php 中找到检查键的函数 function _clean_input_keys($str)。不允许使用 % 字符,因此 '%40' 将不会通过:

 if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))

在您的情况下,解决此问题的唯一方法是在关键参数中避免使用此字符(可能会翻译它)。

The CodeIgniter routing system translates your url to define controller, action and parameters as keys/values. It checks if the value of a key has permitted characters, and you can configure this with the $config['permitted_uri_chars'], but the error message you get is about the key itself not about its value. The $config['permitted_uri_chars'] doesn't help you to allow the @ symbol in this case. You will find the function function _clean_input_keys($str) that checks the keys in system/core/input.php. The % character is not allowed so '%40' will not pass:

 if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))

The only way around this in your case is to avoid this character (maybe translating it) in key parameters.

メ斷腸人バ 2025-01-14 10:32:56

您是否在允许的 uri 字符串中添加了正确的转义?

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

我从我的 CI 站点之一复制了此权利,并且允许 %40。

请参阅上面pekka关于实际@符号的评论。

Did you add proper escaping to your permitted uri string?

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

I copied this right from one of my CI sites and %40 is allowed.

Please refer to pekka's comment above about the actual @ symbol.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文