powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / зачем повторно засылать данные
6 сообщений из 6, страница 1 из 1
зачем повторно засылать данные
    #38844786
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на странице имеется форма
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
<form method='POST' id='searchform' action='http://www.weblaboratory.info/'>
				<label for='rublic'>I'm looking for: </label>
				<select name='rublic' class='testselect2' id='rublic'>
					<option value='0'>All</option>
					<option value='1'  selected>Advertiser</option>
					<option value='2' >Media</option></select> &nbsp; <label  id='l_category' for='category'>Vertical:</label><select id='category' name='category' ><option value='0'>All</option><option value = '1'  selected >Forex</option><option value = '2' >Binary</option><option value = '3' >Auto</option><option value = '4' >Beauty</option><option value = '5' >Dating</option>select>
<input type='submit' id='search' value='Search'>
</form>	



при сабмите данные попадают в класс(вот его конструктор)

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
 function __construct() 
	    {
			try
			{
				if(isset($_POST["rublic"])) 
				{
					$this->_type = $_POST["rublic"];
					setcookie ("type_cookie", $_POST["rublic"], time() + 3600);
					setcookie ("page_cookie", 1, time() + 3600);
				}
				else if(isset($_COOKIE["type_cookie"]))
				{
					$this->_type = $_COOKIE["type_cookie"];
				}
				else { $this->_type = 0; }
			
				if(isset($_POST["category"]))
				{
					$this->_category = $_POST["category"];
					setcookie ("category_cookie", $_POST["category"], time() + 3600);
					setcookie ("page_cookie", 1, time() + 3600);
				}
				else if(isset($_COOKIE["category_cookie"]))
				{
					$this->_category = $_COOKIE["category_cookie"];
				}
				else { $this->_category = 0; }	
				 echo"1)type = ".$_COOKIE["type_cookie"]." category = ".$_COOKIE["category_cookie"];
			}
			catch (Exception $e)  {  }
		}



Всё бы пормально но после первого сабмита, при последующих сабмитах или обновлении страницы появляется табличка что необходимо заново отослаь дынные что я раньше засабмитил и что надо это разрещить!

почему так происходит и как исправить?
...
Рейтинг: 0 / 0
зачем повторно засылать данные
    #38844863
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Areostar,

Перезапрашивай форму методом Get. http://forum.php.su/topic.php?forum=71&topic=15634
...
Рейтинг: 0 / 0
зачем повторно засылать данные
    #38845002
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И В самом деле пришлось на GET переписатью Работает на ура но с POST былобы аккуратнее без этой лапши в адресной строке.

А в чем тут проблема с GET я чтото не понял!??
...
Рейтинг: 0 / 0
зачем повторно засылать данные
    #38845014
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostar, у методов GET и POST разная семантика. GET предназначен для операций не имеюших побочных эффектов. То есть повторное обращение к URL с командной GET является безопасной и допустимой операцией. Собственно именно GET мы используем большую часть времени при серфинге в сети. Повторное обращение к URL с командной POST может иметь нежелательный побочный эффект для пользователя. Именно поэтому все браузеры просят подтвердить повторную отправку данных для страниц запрошенных через POST. Пример операций с побочным эффектом - добавление товара в корзину, upload файла, перечисление денег. Кроме семантики есть и другие соображения, а именно размер передаваемых данных и их видимость. Для GET мы ограничены примерно 2 Кб на весь url включая параметры. Для POST ограничений нет.

Ты правильно поступил заменив POST на GET т.к. POST тут совершенно не нужен. Но если бы от POST нельзя было бы отказаться, то стандартное решение это редирект после обработки POST запроса.
...
Рейтинг: 0 / 0
зачем повторно засылать данные
    #38845155
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileAreostar, у методов GET и POST разная семантика. GET предназначен для операций не имеюших побочных эффектов. То есть повторное обращение к URL с командной GET является безопасной и допустимой операцией. Собственно именно GET мы используем большую часть времени при серфинге в сети. Повторное обращение к URL с командной POST может иметь нежелательный побочный эффект для пользователя. Именно поэтому все браузеры просят подтвердить повторную отправку данных для страниц запрошенных через POST. Пример операций с побочным эффектом - добавление товара в корзину, upload файла, перечисление денег. Кроме семантики есть и другие соображения, а именно размер передаваемых данных и их видимость. Для GET мы ограничены примерно 2 Кб на весь url включая параметры. Для POST ограничений нет.

Ты правильно поступил заменив POST на GET т.к. POST тут совершенно не нужен. Но если бы от POST нельзя было бы отказаться, то стандартное решение это редирект после обработки POST запроса.

Понялю Но чтото про такое раньше не читал
...
Рейтинг: 0 / 0
зачем повторно засылать данные
    #38847650
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще GET может вообще не обратиться к серверу. А взяить данные из кєша.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / зачем повторно засылать данные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]