|
|
|
| На страничке есть форма, в ней несколько кнопок. Когда пользователь нажимает одну из них, управление передаётся скрипту. Проблема в том, что если он просто обновляет страницу, то в массиве $_POST лежат данные такие же как от предыдущего нажатия на кнопку. Как с этим бороться??? | |
|
|
|
|
|
|
|
для: Хомяков
(29.07.2008 в 20:53)
| | В смысле F5? Тогда перенаправление. | |
|
|
|
|
|
|
|
для: sim5
(29.07.2008 в 20:55)
| | Простите,не понял вопроса... | |
|
|
|
|
|
|
|
для: Хомяков
(29.07.2008 в 20:56)
| | >Проблема в том, что если он просто обновляет страницу
Имеете ввиду обновление пользователем страницы по нажатию, например, клавиши F5 ? | |
|
|
|
|
|
|
|
для: sim5
(29.07.2008 в 21:00)
| | да, речь идёт именно об этом. Метод post.... | |
|
|
|
|
|
|
|
для: Хомяков
(29.07.2008 в 20:53)
| | Ну предположим, в форме две кнопки, а на страничке число. Одна кнопка - увеличить число на единичку, а вторая - уменьшить на единичку. При нажатии вылезает та же страница, только с изменённым числом. Но если пользователь например нажал сначала увеличить, а потом просто обновляет страницу, то при каждом обновлении число увеличивается на единичку.... Нужен конкретный пример? | |
|
|
|
|
|
|
|
для: Хомяков
(29.07.2008 в 20:59)
| | Не важно какой метод, надо сбросить POST (GET) данные. Это можно сделать перенаправлением, в данном случе "на себя", наример:
<?
session_start();
if (isset($_POST['plus'])) $_SESSION['count'] += 1;
if (isset($_POST['minus'])) $_SESSION['count'] -= 1;
header("location : main.php");
if ($_SESSION['count']) echo $_SESSION['count']."<br>";
?>
<form action="" method="post">
<input type="radio" name="plus" onclick="this.form.submit()">+
<input type="radio" name="minus" onclick="this.form.submit()">-
</form>
|
PS. Это только пример перехода, без всяких условий, поэтому нет как таковой защиты от F5. А условие будет зависить от того, что вам надо - пользователь может нажать один раз кнопку и все, либо может щелкать их до упаду. Но во втором случае, какой смысл защиты тогда. | |
|
|
|
|
|
|
|
для: sim5
(29.07.2008 в 21:22)
| | Нужно, чтобы он мог щёлкать до упаду, но при обновлении страницы изменения счётчика не происходило. | |
|
|
|
|
|
|
|
для: sim5
(29.07.2008 в 21:22)
| | Тут дело не в защите, просто для удобства пользователя. Например, у него по каким-то причинам недогрузилась до конца страница. Когда он нажмёт F5, показания счётчика изменятся на 2. Нужно этого избежать. | |
|
|
|
|
|
|
|
для: Хомяков
(29.07.2008 в 22:47)
| | Sim5 предложил Вам решение проблемы именно для этого случая.
Более точно:
header("Location: main.php"); exit();
|
| |
|
|
|
|
|
|
|
для: Хомяков
(29.07.2008 в 22:47)
| | Странно, а вам тогда какая разница как дитя тешится, либо жмет кнопку, либо F5?) | |
|
|
|
|
|
|
|
для: sim5
(30.07.2008 в 06:46)
| | Спасибо, ваш совет помог :-) | |
|
|
|