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

このタイプのコードには十分注意してください。$ _REQUEST値をまったくフィルタリングしていないため、悪意のあるユーザーがサーバー上の任意のファイルを指定できます。例:

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

絶対パスを使用して、パスの問題を修正できます。

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

これにより、適切な相対パスを把握する必要があるという負担が軽減されます。

于 2012-04-07T17:24:26.007 に答える
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 に答える