我正在使用文件管理系统并保护网址。不允许对url字符串进行操作,导致页面被杀死。 我删除文件时想要例外。
删除文件时,url字符串始终如下所示:
example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1
或
example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/file.jpg
或
example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1/file.jpg
所以字符串的最小值始终包含:
example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b
(哈希是用户标识的md5哈希值)
那么如何获取最小的url字符串呢?
答案 0 :(得分:1)
我会使用explode()
。即使散列的大小不同,如果你遵循相同的结构,我也会这样做:
$delete = explode("/", $_GET["delete"]);
print_r($delete);
输出到:
Array
(
[0] => uploads
[1] => sfm
[2] => c4ca4238a0b923820dcc509a6f75849b
[3] => folder1
)
$delete[2]
会给我哈希值。我想这是最好的方法,即使网址发生了变化。
答案 1 :(得分:1)
使用implode
,array_slice
,explode
。
Explode将字符串提取到数组,数组切片将数组切割到第4项,而implode会将数组项目提取到新的字符串。
$str = 'example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1 ';
echo $output = implode('/', array_slice(explode("/", $str), 0, 4)); //example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b