【问题标题】:URI segment as parameter to function: passing commas,+,date formats as URI segments allowed?URI 段作为函数的参数:允许将逗号、+、日期格式作为 URI 段传递?
【发布时间】:2013-11-06 05:30:50
【问题描述】:

您能否在 codeigniter 的 URI 段中将逗号或 + 符号或日期时间格式的数据作为参数传递? 就像通过 ajax 调用 url 一样:controller/function/argument1/argument2

现在这个参数 1 在从前端调用时可以包含像 +,(,),comma 这样的字符吗?似乎不是这样。我尝试通过 URI 段将地址变量传递给函数,但是地址中出现的 + 符号和逗号会产生错误。从前端传递的日期格式也是如此。这是限制还是有解决方法?

【问题讨论】:

  • 我已经意识到,在 codeigniter 中更改配置文件中的字符可以让您接受这些字符作为 URI 段,但配置文件还指出 - 除非您完全理解后果,否则请勿更改!有人可以阐明影响吗?这是严重的安全问题吗?

标签: php codeigniter codeigniter-routing


【解决方案1】:

如果您检查application/config 文件夹中的config.php 文件,您可以找到以下内容:

|--------------------------------------------------------------------------
| Allowed URL Characters
|--------------------------------------------------------------------------
|
| This lets you specify with a regular expression which characters are permitted
| within your URLs.  When someone tries to submit a URL with disallowed
| characters they will get a warning message.
|
| As a security measure you are STRONGLY encouraged to restrict URLs to
| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
|
| Leave blank to allow all characters -- but only if you are insane.
|
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
|
*/
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

所以,基本上,你可以改变它来接受你想要的任何符号, 但我真的不知道除了上面允许的 uri 中的符号之外,还有什么类型的原因可以让你通过。

【讨论】:

  • 感谢 mamdouh,我正在尝试字段接受来自前端的地址和日期。所以地址除了默认允许的字符之外可能还有几个字符,从前端返回的日期时间格式也有括号和'+'和':'符号。我试图通过 uri 段将相同的内容发送到后端。虽然我可以添加以允许更多字符,但如配置文件中所示,我不理解 REPERCUSSIONS。你知道吗?
  • 你可以通过post发送你的数据,这会降低风险,你可以使用data('Y-m-d',$user_side_date);重新格式化你的用户端日期以调整mysql格式,看看date class from php了解更多信息
  • 日期格式仍然是个问题,但配置文件中的其他更改使其正常工作。
  • @yash - 我还是推荐你使用 post 调用方法,那是你可以使用日期格式的时候,我没说你可以使用 uri 字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多