Предотвращение загрузки изображения при обновлении

Я работаю с самой простой формой загрузки изображений, и я очень хотел бы сохранить его таким образом, используя только что и некоторые php.

Код выглядит так:

<form action="index.php" method="POST" enctype="multipart/form-data"> <input type="file" name="image"> <input type="submit" value="Upload image"> </form> <?php $image = addslashes(file_get_contents($_FILES['image'][tmp_name])); mysql_query("INSERT INTO store_images VALUES ('','$image')"); ?> 

Я выбираю изображение, загружаю его и обновляю один раз / два раза. Когда я смотрю на таблицу «store_images», изображение загружается дважды / трижды / и т. Д.

Как мне избежать этого, не нарушая возможности загрузки другого изображения?

Начать с:

Пожалуйста, прекратите писать новый код с помощью древних функций mysql_* . Они больше не поддерживаются, и сообщество начинает процесс осуждения . Вместо этого вы должны узнать о подготовленных операторах и использовать либо PDO, либо MySQLi . Если вы не можете решить, эта статья поможет выбрать. Если вы хотите узнать, вот неплохой учебник по PDO .

Теперь для вашей проблемы:

Вы должны сделать перенаправление после успешной загрузки header('Location: http://example.com/the/address') изображения header('Location: http://example.com/the/address') . Это может быть даже одна и та же страница. Поскольку вы перенаправляете данные, они больше не находятся на странице и больше не будут вставлены.

Создайте случайное число, хэш или аналогичный с формой и вставьте его в базу данных вместе с вашим изображением. Перед вставкой проверьте базу данных для существующего хэша.

сначала проверьте значение $image в db и только если его нет, загрузите / вставьте

Если вы не хотите дублировать файлы в своей таблице (что желательно), создайте хеш-файл md5 и сохраните его в столбце с файлом и сделайте столбец md5 уникальным.

Если вы хотите дублировать файлы в своей таблице, выполните то же самое, что указано выше, только сделайте столбец md5 и имя файла уникальным. Это должно позволить другому пользователю вставлять ту же картинку снова с другим именем.

Если вы хотите, чтобы дубликаты файлов с тем же именем разрешались, сделайте то, что предложил @jimpic. Это должно позволить вам или любому другому пользователю вставлять дубликаты одного и того же файла с тем же именем файла, но только если вы сделаете это специально.

Не перенаправляйте на другую страницу после каждой вставки. Лучше не тормозить нормальную функциональность браузера назад / вперед, если сможете. Пользователю это похоже на обновление одной страницы, когда на самом деле браузеру они будут вести себя как 2 и раздражать людей, потому что кнопка «Назад» спросит «вы хотите отправить данные формы».