我有一个php文件,其中包含以下路径
Shubhmangalam/admin/welcome_image_edition/delete_image.php
和具有以下路径的图像文件
Shubhmangalam/welcome_images/image_1.jpg
我想删除image_1.jpg文件,我知道可以使用unlink()方法完成。
但问题是.php
文件和.jpg
文件的父文件夹是不同的,他们的文件系统级别也是如此...我无法找到正确的方法来获取路径删除image_1.jpg文件。
现在,delete_image.php上的代码是
<?php
$image=$_REQUEST['image'];
if(unlink("./../welcome_images/".$image))
echo "Successfully Deleted";
else
echo "Wrong";
?>
现在上面是服务器脚本代码,我想通过获取适当的路径来删除图像..我不想要实际的路径,但是项目文件夹的路径是Shubhmangalam
提前致谢
答案 0 :(得分:2)
对这种类型的代码要非常小心。您没有过滤$ _REQUEST值AT ALL,这允许恶意用户在您的服务器上指定任何文件,例如:
http://example.com/delete_image.php?image=../../../../../../../../../etc/passwd
您可以使用绝对路径修复路径问题:
unlink('/path/leading/to/your/welcome_images/' . $image);
让你不得不承担必须找出适当的相对路径的负担。
答案 1 :(得分:2)
Shubhmangalam/admin/welcome_image_edition/delete_image.php
那是:
__FILE__
和具有以下路径的图像文件
Shubhmangalam/welcome_images/image_1.jpg
那是:
dirname(dirname(__DIR__)) . '/welcome_images/image_1.jp';
在第一个文件中。为了您自己的利益,请使用magic constants __FILE__
and __DIR__
,例如:
if (unlink(__DIR__."/../../welcome_images/".$image))
{
...