我想删除URL字符串中的所有点点斜线,以便用户无权访问父级目录。我可以拥有的是../../../file
,以下方法可以安全使用吗?
$str = '../../../file';
$str = str_replace('..','', ltrim($str,'/'));
编辑:感谢您的建议和解答,但我也想知道为什么不使用此代码?它不够安全吗?它可以被剥削吗?
答案 0 :(得分:2)
您可以像这样使用preg_replace:
$string = '../../../file';
echo preg_replace("/(\.\.\/)/","", $string);
答案 1 :(得分:1)
$str = '../../../file';
$str = str_replace('../','', $str);
echo $str;
答案 2 :(得分:0)
我不清楚您的问题,我怀疑您需要重写您的网址。 如果是这样你可以使用.htaccess文件重写它
RewriteEngine On
RewriteRule ^$ /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1
或者您只想从$ str中删除子文件夹 你只需使用以下代码
$str = preg_replace('/..\//', '', $str);
或
$str = str_replace('../','', $str);
答案 3 :(得分:0)
我们也可以使用多个字符选择:
echo str_replace(array('..', '/'), ' ', $string);