1

写真をアップロードすると、上に表示されるプログラムがあります。AJAX がないため、ページを更新すると写真が表示されます。しかし、もう一度更新すると、写真が再アップロードされて表示されます。最初にアップロードされたデータを削除するにはどうすればよいですか?

メインページはこちら。

   <?php


include 'id2.php';

$file = $_FILES['image']['tmp_name'];

if(!isset($file)) {
echo "Please select image.";
} else {
    $image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
    $image_name = $_FILES['image']['name'];
    $image_size = getimagesize($_FILES['image']['tmp_name']);

    if($image_size==FALSE) {
    echo 'that is not an image.';
    } else {
     if (!$insert = mysql_query("INSERT INTO photo VALUES ('', '$image_name', '$image')")) {
      echo "Problem uploading image";
     }
    }

}



?>


<form action="Photosite.php" method="POST" enctype="multipart/form-data">
<input type="file" name="image"></br></br>
<input type="submit" value="Submit">
</form>

私の画像表示ページ。

$query = "SELECT `id` FROM `photo`.`photo`";
$query_run = mysql_query($query);
while ($data = mysql_fetch_array($query_run)) {
echo '<'.'img src="id.php?id='.$data['id'].'">';
}

そして残り

$id = abs($_GET['id']);
$query = mysql_query("SELECT `image` FROM `photo`.`photo` WHERE id='$id'");
$data = mysql_fetch_array($query) or die (mysql_error());
$image = $data['image'];



$jpgimage = imagecreatefromstring($image);




    $image_width = imagesx($jpgimage);
    $image_height = imagesy($jpgimage);

    $new_size = ($image_width + $image_height)/($image_width*($image_height/45));
    $new_width = $image_width * $new_size;
    $new_height = $image_height * $new_size;

    $new_image = imagecreatetruecolor($new_width, $new_height);


    imagecopyresized($new_image, $jpgimage, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);

      header('Content-type: image/jpeg');
      imagejpeg($new_image, null);


?>

答えは簡単だと思いますが、私はこれが初めてなので、ありがとう!

ああ、そうです、クエリ関数の一部が古くなっていることは知っています!

4

3 に答える 3

2

あなたが探している概念はPost/Redirect/Getと呼ばれます。データの「削除」とは関係ありませんが、POST データの重複送信を防ぐために (そしてもう少しユーザーフレンドリーにするために)、POST の後に別の GET 要求を作成する必要があります。

フォームの送信と DB への保存が成功したら、次の操作を行います。

header('Location: /path/to/view/uploaded/image', true, 303);
exit;

...または、同じページであっても、ユーザーが行きたい場所にリダイレクトします。

于 2013-02-05T02:43:24.083 に答える
0

ページを更新するとフォームが再度送信されるため、写真が再度アップロードされます。写真を削除するには、次の行に沿ってクエリを記述する必要があります。

$query = "DELETE FROM photo WHERE id = " . $id_of_image;

更新時に写真をアップロードしたくない場合は、ファイルがアップロードされた後にページをリダイレクトする必要があります。

header('Location: http://www.example.com/');
于 2013-02-05T02:43:45.033 に答える
0

header('location: showimagefile.php?imageid'); アップロードファイルの最後に使用します。このため、ctrl + r をクリックしてページを更新し、画像を再アップロードすることはできません。1 ページ戻ると、データを再送信するように求められますが、クエリを使用して、そのデータを含む行が存在しないことを確認します。

于 2013-02-05T02:44:52.113 に答える