0

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..'
4

1 回答 1

1

见以下网址:-

CodeIgniter 中的 URI 类

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

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

读这个

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

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

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

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

于 2012-08-05T15:59:15.350 回答