40

という名前の画像を保存するフォルダーがありますimg/。すべての画像を含むテーブルがあります。

<table border="3">
    <tr>
        <td>    
            <?php
            $files = glob("img/*");
            foreach ($files as $file) {
                echo "<div class='divimages'>"; 
                echo '<img src="'.$file.'"/>';
                echo "<input type='submit' value='Delete image'/><br>";
                echo "</div>";  
            }
            ?>
        </td>
    </tr>   
</table>

値を持つボタンに関連付けられた画像を削除するにはどうすればよいですか: "Delete image"

4

7 に答える 7

71

いくつかのルートがあります。最も単純なものは、それをフォームにすることです。送信時に POST データに反応し、使用して画像を削除しますunlink

免責事項: これは安全ではありません。攻撃者はこのコードを使用して、サーバー上のファイルを削除する可能性があります。このデモ コードを拡張して、セキュリティ対策を追加する必要があります。そうしないと、問題が発生する可能性があります。

各画像の表示マークアップには、次のようなフォームが含まれます。

echo '<form method="post">';
  echo '<input type="hidden" value="'.$file.'" name="delete_file" />';
  echo '<input type="submit" value="Delete image" />';
echo '</form>';

...そして、同じ PHP ファイルの先頭に:

if (array_key_exists('delete_file', $_POST)) {
  $filename = $_POST['delete_file'];
  if (file_exists($filename)) {
    unlink($filename);
    echo 'File '.$filename.' has been deleted';
  } else {
    echo 'Could not delete '.$filename.', file does not exist';
  }
}
// existing code continues below...

これについては、javascript を使用して詳しく説明できます。フォームを送信する代わりに、AJAX リクエストを送信できます。サーバー側のコードは、これにかなり似ています。

ドキュメントと関連資料

于 2013-02-21T15:37:39.000 に答える
30

この関数を使用して、PHPのファイルを削除できますunlink()

unlink('path/to/file.jpg');
于 2013-02-21T15:25:45.987 に答える
3

削除にはhttp://www.php.net/manual/en/function.unlink.phpを使用してください。 ロジックを記述できることを願っていますか?

于 2013-02-21T15:27:26.237 に答える
1
<?php

    require 'database.php';

    $id = $_GET['id'];

    $image = "SELECT * FROM slider WHERE id = '$id'";
    $query = mysqli_query($connect, $image);
    $after = mysqli_fetch_assoc($query);

    if ($after['image'] != 'default.png') {
        unlink('../slider/'.$after['image']);
    }

    $delete = "DELETE FROM slider WHERE id = $id";
    $query = mysqli_query($connect, $delete);

    if ($query) {
        header('location: slider.php');
    }

?>
于 2019-04-11T08:38:21.013 に答える