1

我有一个具有以下路径的 php 文件

Shubhmangalam/admin/welcome_image_edition/delete_image.php

和具有以下路径的图像文件

Shubhmangalam/welcome_images/image_1.jpg

我想删除我知道可以使用 unlink() 方法完成的 image_1.jpg 文件。但问题是.php 文件和.jpg文件的父文件夹不同,它们的文件系统级别也是如此。 .而且我找不到正确的方法来获取删除 image_1.jpg 文件的路径。

现在 delete_image.php 上的代码是相应的

<?php
$image=$_REQUEST['image'];
if(unlink("./../welcome_images/".$image))
   echo "Successfully Deleted";
else 
   echo "Wrong";
?>   

现在上面是服务器脚本代码,我想通过获取适当的路径来删除图像。我不想要实际路径,而是项目文件夹中的路径Shubhmangalam

提前致谢

4

2 回答 2

2
 Shubhmangalam/admin/welcome_image_edition/delete_image.php

那是:

 __FILE__

和具有以下路径的图像文件

 Shubhmangalam/welcome_images/image_1.jpg

那是:

 dirname(dirname(__DIR__)) . '/welcome_images/image_1.jp';

在第一个文件中。为了您自己的利益,请使用魔法常数__FILE____DIR__例如:

if (unlink(__DIR__."/../../welcome_images/".$image))
{
    ...
于 2012-04-07T17:28:33.970 回答
2

对这种类型的代码要非常小心。您没有完全过滤 $_REQUEST 值,它允许恶意用户在您的服务器上指定任何文件,例如:

http://example.com/delete_image.php?image=../../../../../../../../../etc/passwd

您可以使用绝对路径来解决您的路径问题:

unlink('/path/leading/to/your/welcome_images/' . $image);

这使您不必再为必须找出适当的相对路径而烦恼。

于 2012-04-07T17:24:26.007 回答