Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Очистить массив метода POST

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Очистить массив метода POST
unnomen
Отправлено: 28 Марта, 2015 - 09:46:20
Post Id



Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Подскажите пожалуйста, существуют ли методы очистки массива, который был отправлен методом $_POST?

unset($_POST[]) не работает.

После выполнения скрипта при обновлении страницы происходит повторное выполнение скрипта.
Т.е. в index.php имеются 2 и более вариантов обработки условий, но при обновлении страницы выполняется последнее выполненное условие ещё раз, что приводит к ошибке.

Конкретно - я хочу сделать так, чтобы после выполнения скрипта происходило очищение массива, который был получен методом $_POST, после этого, поместить в этот массив две переменные, которые после выполнения скрипта при открытии html вывели значение указанных мной переменных.

Перенаправление нужно именно на index.php:

Указывать перенаправление на конкретно файл "index.php" не нужно.

$_GET использовать тоже не желательно. Адресная не строка должна отображать указанные данные.

Сессии и куки тоже не предлагать, т.к. их не нужно использовать в моём примере.

(Отредактировано автором: 28 Марта, 2015 - 11:47:17)

 
 Top
Tyoma5891
Отправлено: 28 Марта, 2015 - 10:33:26
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




1. $_POST это не метод, а массив в котором содержаться данные введеные в html- форму после того как произошел сабмит, а метод передаваемых данных POST
2. Не понятно зачем Вам нужно очищать этот массив $_POST чем он Вам он дорогу перешел то? Улыбка
3. Чтобы не было повторной отправки формы после обновления страницы необходимо делать редирект


P. S если хотите добавлять данные в массив $_POST вовсе не нужно предварительно его очищать, достаточно сделать так, к примеру
 
 Top
LIME
Отправлено: 28 Марта, 2015 - 10:52:22
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Tyoma5891 ты не до конца понял
он еще хочет сохранять в $_POST данные между запросами
наверное чтобы отображать сообщение
и сам запрещает все нормальные способы это сделать))
 
 Top
unnomen
Отправлено: 28 Марта, 2015 - 11:46:53
Post Id



Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Уточню свой вопрос:
Сделал пример, чтобы наглядней было.

Есть страница с HTML:
Спойлер (Отобразить)

Есть обработчик PHP:
Спойлер (Отобразить)

По умолчанию $otvet = 'true', на странице выводится эта надпись.
После заполнения формы и отправке - выводится текст, который был отпрвлен.
При обновлении полученной страницы происходит повторный вывод $otvet, который равен ранее отправленному тексту.

header просто напросто перезагружает страницу без запроса. А нужно, чтобы был выведен ответ, но при обновлении не повторялся запрос. Т.е. в случае обновления страницы $otvet был установлен по умолчанию, а значение выводилась надпись 'true'.

Tyoma5891 пишет:
3. Чтобы не было повторной отправки формы после обновления страницы необходимо делать редирект

Вы указали конкретную страницу. Чтобы страница была отправлена скрипту, который сгенерировал эту страницу - достаточно указать точку

таким образом в адресной строке не будет указан скрипт, который сгенерировал страницу.

(Отредактировано автором: 28 Марта, 2015 - 12:46:57)

 
 Top
Tyoma5891
Отправлено: 28 Марта, 2015 - 12:39:37
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




и в чем вопрос?
 
 Top
unnomen
Отправлено: 28 Марта, 2015 - 12:44:47
Post Id



Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Tyoma5891 пишет:
и в чем вопрос?


Есть страница с HTML:
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <meta charset="UTF-8">
  5.         <title></title>
  6.     </head>
  7.     <body>
  8.         <?php echo $otvet; ?>
  9.         <form action="?editform" method="post">
  10.             <input type="text" name="message" value="">
  11.             <input type="submit" name="button" value="GO">
  12.         </form>
  13.     </body>
  14. </html>

Есть обработчик PHP:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. if (isset($_GET['editform'])) {
  4.    
  5.     $otvet = $_POST['message'];
  6.     include 'index.html.php';
  7.     exit();
  8. }
  9.  
  10. $otvet = 'true';
  11. include 'index.html.php';
  12. exit();

По умолчанию $otvet = 'true', на странице выводится эта надпись.
После заполнения формы и отправке - выводится текст, который был отпрвлен.
При обновлении полученной страницы происходит повторный вывод $otvet, который равен ранее отправленному тексту.

header просто напросто перезагружает страницу без запроса. А нужно, чтобы был выведен ответ, но при обновлении не повторялся запрос. Т.е. в случае обновления страницы $otvet был установлен по умолчанию, а значение выводилась надпись 'true'.

(Отредактировано автором: 28 Марта, 2015 - 12:47:19)

 
 Top
Faraon-san
Отправлено: 28 Марта, 2015 - 14:32:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




тут только $_GET или Ajax
 
 Top
Ts.Saltan
Отправлено: 28 Марта, 2015 - 17:01:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




unnomen пишет:
в случае обновления страницы $otvet был установлен по умолчанию, а значение выводилась надпись 'true'

Раз не нравится header, как вариант, куки + поле с уникальным значением.

PHP:
скопировать код в буфер обмена
  1. <?
  2.  
  3. if(isset($_GET['editform']) && isset($_COOKIE['rand']) && isset($_POST['rand']) && $_POST['rand'] == $_COOKIE['rand']){  
  4.     $otvet = $_POST['message'];
  5.     include 'index.html.php';
  6.     exit();
  7. }
  8.  
  9. $rand = uniqid('form_');
  10. setcookie('rand', $rand);
  11. $otvet = 'true';
  12. include 'index.html.php';
  13. exit();

CODE (htmlphp):
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <meta charset="UTF-8">
  5.         <title></title>
  6.     </head>
  7.     <body>
  8.         <?php echo $otvet; ?>
  9.         <form action="?editform" method="post">
  10.             <input type="text" name="message" value="">
  11.             <input type="hidden" name="rand" value="<?=$rand?>">
  12.             <input type="submit" name="button" value="GO">
  13.         </form>
  14.     </body>
  15. </html>
 
 Top
unnomen
Отправлено: 28 Марта, 2015 - 21:14:59
Post Id



Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Я через сессию сделал, но, появилась другая проблема.
Когда в браузере возвращаюсь назад - браузер уведомляет о том, что такой страницы нет. Но есть кнопка "Попробовать снова", при нажатии на которую происходит (мать его!) повторный запрос...

Концовка скрипта
PHP:
скопировать код в буфер обмена
  1.  
  2.  $classtitle = $_POST['classtitle'];
  3.     $_SESSION['classid'] = $_POST['classid'];
  4.     $_SESSION['classtitle'] = $_POST['classtitle'];
  5.     $_SESSION['message'] = "Ученик был успешно добавлен в $classtitle класс";
  6.     header('Location: .');
  7.     exit();
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB