Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: обновление страницы, проблема с post
 
 автор: Хомяков   (29.07.2008 в 20:53)   письмо автору
 
 

На страничке есть форма, в ней несколько кнопок. Когда пользователь нажимает одну из них, управление передаётся скрипту. Проблема в том, что если он просто обновляет страницу, то в массиве $_POST лежат данные такие же как от предыдущего нажатия на кнопку. Как с этим бороться???

  Ответить  
 
 автор: sim5   (29.07.2008 в 20:55)   письмо автору
 
   для: Хомяков   (29.07.2008 в 20:53)
 

В смысле F5? Тогда перенаправление.

  Ответить  
 
 автор: Хомяков   (29.07.2008 в 20:56)   письмо автору
 
   для: sim5   (29.07.2008 в 20:55)
 

Простите,не понял вопроса...

  Ответить  
 
 автор: sim5   (29.07.2008 в 21:00)   письмо автору
 
   для: Хомяков   (29.07.2008 в 20:56)
 

>Проблема в том, что если он просто обновляет страницу

Имеете ввиду обновление пользователем страницы по нажатию, например, клавиши F5 ?

  Ответить  
 
 автор: Хомяков   (29.07.2008 в 21:02)   письмо автору
 
   для: sim5   (29.07.2008 в 21:00)
 

да, речь идёт именно об этом. Метод post....

  Ответить  
 
 автор: Хомяков   (29.07.2008 в 20:59)   письмо автору
 
   для: Хомяков   (29.07.2008 в 20:53)
 

Ну предположим, в форме две кнопки, а на страничке число. Одна кнопка - увеличить число на единичку, а вторая - уменьшить на единичку. При нажатии вылезает та же страница, только с изменённым числом. Но если пользователь например нажал сначала увеличить, а потом просто обновляет страницу, то при каждом обновлении число увеличивается на единичку.... Нужен конкретный пример?

  Ответить  
 
 автор: sim5   (29.07.2008 в 21:22)   письмо автору
 
   для: Хомяков   (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. А условие будет зависить от того, что вам надо - пользователь может нажать один раз кнопку и все, либо может щелкать их до упаду. Но во втором случае, какой смысл защиты тогда.

  Ответить  
 
 автор: Хомяков   (29.07.2008 в 22:37)   письмо автору
 
   для: sim5   (29.07.2008 в 21:22)
 

Нужно, чтобы он мог щёлкать до упаду, но при обновлении страницы изменения счётчика не происходило.

  Ответить  
 
 автор: Хомяков   (29.07.2008 в 22:47)   письмо автору
 
   для: sim5   (29.07.2008 в 21:22)
 

Тут дело не в защите, просто для удобства пользователя. Например, у него по каким-то причинам недогрузилась до конца страница. Когда он нажмёт F5, показания счётчика изменятся на 2. Нужно этого избежать.

  Ответить  
 
 автор: Trianon   (29.07.2008 в 22:56)   письмо автору
 
   для: Хомяков   (29.07.2008 в 22:47)
 

Sim5 предложил Вам решение проблемы именно для этого случая.
Более точно:
header("Location: main.php"); exit();

  Ответить  
 
 автор: sim5   (30.07.2008 в 06:46)   письмо автору
 
   для: Хомяков   (29.07.2008 в 22:47)
 

Странно, а вам тогда какая разница как дитя тешится, либо жмет кнопку, либо F5?)

  Ответить  
 
 автор: Хомяков   (30.07.2008 в 09:46)   письмо автору
 
   для: sim5   (30.07.2008 в 06:46)
 

Спасибо, ваш совет помог :-)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования