2011-01-19 69 views
1

我想了解下面这一行代码:未知str_replace函数在URL

str_replace('../', '', $route); 

基本上它说,从URL中$route

$route = 'information/information&information_id=4'; 

用什么代替'../''index.php?route=information/information&information_id=4'

但是$ route变量中没有../。这是一种正则表达式吗?如果是的话,它究竟做了什么。多谢你们。

+0

作为@brain_d和@Mchl说,它可能是一个安全措施,但应被检测之类的事情,并给出错误不只是删除。任何人把``../到字符串是100%保证的。攻击 – Jonah 2011-01-19 19:18:57

+0

为什么给他们的错误信息登录自己的IP和时间,但在其他方面给他们不知道发生了什么:P – Mchl 2011-01-19 19:26:51

回答

4

你在想,它取代"../"一个空字符串正确。这不是正则表达式。有在你的例子没有它的出现时,但有可能是

它可能被用于某种安全的,以防止你回去了从文档根目录结构。

+0

哇,能跟大家都太快了,非常感谢..得到它:) – Sparctus 2011-01-19 19:25:27

2

如果有字符串中没有../,这将取代什么。这不是一个正则表达式(见preg_replace()了点。这只是预防措施,防止有人试图通过无效的路径(以../),这有可能是访问的web服务器的文档根目录以外的文件的尝试(换句话说,一个黑客攻击)。