从祖父文件夹中获取文件的路径

时间:2012-04-07 17:19:48

标签: php relative-path

我有一个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

提前致谢

2 个答案:

答案 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))
{
    ...