0

ユーザーが自分のフォルダーに写真をアップロードできる Web サイトがあります。ページが更新されると、そのフォルダー内のすべての画像が表示されます。

glob 関数の代わりに scandir を使用して画像を読み取りました。ファイルの種類の拡張子が許可されている形式 (jpg、jpeg、gif、png) であるかどうかを確認し、ループを使用してそれらを表示します。各画像の横には「削除」リンクがあります。

ユーザーが「削除」リンクを押したときに、フォルダー内の特定の画像を削除したい。関数 unlink() で画像を削除できることは知っていますが、その特定の画像名を delete.php に渡す方法がわからないため、削除できませんでした。まだ習っていない AJAX を使うように誰かに言われました。必要ならすぐに習いに行きます。AJAXの代わりにこれを解決する方法があれば教えてください。どうもありがとう!

$dir  = 'images/';

$file_type_allowed = array('jpg','jpeg','png','gif');

$dir_contents = scandir($dir);

foreach($dir_contents as $file){

    $file_type = explode('.',$file);
    $file_type = strtolower(end($file_type));

    if($file !== '.' && $file !== '..' && in_array($file_type, $file_type_allowed) == true){

        echo '<img src="', $dir, '/', $file, '" alt="', $file, '" />';
        echo '<a href="delete.php">Delete</a>';     
}
4

1 に答える 1

1

URL で引数を渡すだけで、$_GET スーパーグローバル経由でアクセスできます。ただし、これによりページがリロードされます。Ajax により、ユーザーは「削除」リンクをクリックすることができ、ページをリロードする必要がなくなります。

とにかく、削除リンクを次のようにすると

echo '<a href="delete.php?file=' . urlencode($dir . '/' . $file) . '">Delete</a>';

そして、delete.php で、次のように削除する必要があるファイルにアクセスします。

$file = urldecode($_GET['file']);
// verify the file exists, and that the user should have access
unlink($file);

ただし、細心の注意を払う必要があり、削除する前にファイルの場所を確認してください。そうしないと、悪意のあるユーザーが「delete.php?file=delete.php」と入力してサイトを破壊する可能性があります。そのため、削除元のディレクトリと、ファイルの種類がイメージであることを確認する必要があります。

于 2013-07-11T04:56:55.333 に答える