【问题标题】:Codeigniter URI segment with dots odd results带有点奇数结果的 Codeigniter URI 段
【发布时间】:2012-08-02 18:38:09
【问题描述】:

CodeIgniter 的 URI 段系统有一个奇怪的问题。

当我有这个网址时:

http://www.mywebsite.com/forums/category_name/forum_name/topic_name..(是的,名字有两个点)

现在我在 PHP 中执行此操作:

$topic = $this->uri->segment(4);
>>> echo $topic: 'topic_name..'

这非常有效。但奇怪的是……当我像这样对 URL 附加回复时:

http://www.mywebsite.com/forums/category_name/forum_name/topic_name../reply

现在我再次编写 PHP 代码:

$topic = $this->uri->segment(4);
>>> echo $topic: 'topic_name '

如您所见,它突然将我的“..”替换为“”(一个空格,为什么连两个都不行?)。

有没有人知道当我在一个带点(“.”)之后添加一个段时,URI 段方法是否可能会清理某些内容。奇怪的是,当我手动修复带有空格的 URL 时,它又可以工作了,因为在 trim() 之后它仍然有“..”的左边,这次 CodeIgniter 似乎没有碰到它们:

http://www.mywebsite.com/forums/category_name/forum_name/topic_name..%20/reply

$topic = $this->uri->segment(4);
> echo $topic: 'topic_name.. '
>>> echo trim($topic): 'topic_name..'

【问题讨论】:

  • 为什么决定在 url 中使用点?一个可能的选择是短网址
  • 好吧,我正在使用漂亮的 URL。到目前为止效果很好。我似乎用替代字符覆盖了大多数非法字符。 URL 应该允许点,所以我只是想弄清楚 CodeIgniter 在这里做错了什么。

标签: php codeigniter uri segment


【解决方案1】:

见以下网址:-

CodeIgniter 中的 URI 类

URI 类提供了帮助您从 URI 字符串中检索信息的函数。如果您使用 URI 路由,您还可以检索有关重新路由段的信息。

http://codeigniter.com/user_guide/libraries/uri.html

阅读本文

我相信正在发生的事情是您的服务器正在使用 ./index.php 作为 403。 将“...”添加到 URI 将导致两种情况之一发生。

1) 浏览器会尝试改变文件夹句柄,往上一两个目录

2) 对于 Apache Web Server “(20024)给定的路径格式错误或包含无效字符”

我不建议在 URI 中放置点,除非它用于 url 后缀,然后只需要一个点。

【讨论】:

    猜你喜欢
    • 2011-12-25
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2016-01-03
    • 1970-01-01
    • 2011-09-20
    相关资源
    最近更新 更多