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 之后发出单独的 GET 请求,以防止重复提交 POST 数据(并且更加用户友好)。

成功提交表单并存储在数据库中后,执行以下操作:

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 刷新页面并重新上传图像。如果他们返回一页,它会要求他们重新提交数据,但请使用查询来查看没有包含该数据的行已经存在。

于 2013-02-05T02:44:52.113 回答