Im возникают проблемы с несколькими PHP-страниц, следующий код, например, толькоПредотвратить "пост снова" в PHP
form.php
<form mehtod="post" action="submit.php">
<input type="text" name="theTextbox"/>
<input type="submit"/>
</form>
submit.php
<?php
$theText = $_POST['theTextbox'];
mysqli_query($link,"INSERT into textlist (text) VALUES ('$theText')");
mysqli_query($link,"SELECT * FROM textlist ORDER by inserted LIMIT1");
...some fetch stuff...
echo "Last insert ID is...".$lastID
?>
Итак, если я введу «1234» в текстовое поле, на form.php и нажмите «Отправить», запись будет вставлена в таблицу с 1 234 в "текст" и "ид" становится как 20 ....
эхо на submit.php является "Последняя вставка ID это ... 20" ..
Но теперь .... проблема если я ссылаюсь на страницу, firefox спрашивает меня, хочу ли я снова укусить. Если я нажму YES, тот же текст получит вставку, а идентификатор станет 21.
Я не могу посоветовать пользователю, чтобы не использовать эту функцию. ... и Google Chrome даже не спрашивает.
Как это можно предотвратить?
Вы можете перенаправить их обратно на пустую форму/на другую страницу? Вы также широко открыты для атаки SQL-инъекций. –
перенаправить на пустую форму, например, @ ʰᵈˑ, или сделать какую-то проверку против двойных записей. – Azrael
** Danger **: вы уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, которые вам нужно [защищать] (http://stackoverflow.com/questions/ 60174/best-way-to-prevent-sql-injection-in-php). – Quentin