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

Форум PHP

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

 

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

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

тема: Некорректный ввод методом POST
 
 автор: Владимир55   (11.07.2007 в 13:52)   письмо автору
 
 

Ввожу в переменную информацию вот таким образом:

<form method="post">
<input type="text" name="poisk" size="25">
<input type="submit" value="Найти!">
</form>

<?php
$poisk 
$_POST['poisk'];        
if (!
$poisk) exit ('Пустой запрос');
echo 
$poisk ;


Что не нравится:
1. При запуске скрипта, когда на кнопку "Найти" еще не нажимали, уже появляется сообщение "Пустой запрос". Хотелось бы этого избежать.
2. Наличие оператора exit приводит к тому, что не загружается графика, коды которой расположены вне этого скрипта (ниже по странице сайта).
3. Если ввести фразу, то она нормально выводится на экран. Но если если выполнить на странице сайта, в состав которого входит этот код, какое-то другое действие, или нажать кнопку "обновить страницу", то выводится опять та же фраза, хотя её уже не вводили. Хотелось бы и от этого избавиться.

   
 
 автор: Faraon   (11.07.2007 в 14:01)   письмо автору
 
   для: Владимир55   (11.07.2007 в 13:52)
 

1. Так правильно и будет потомучто условие if (!$poisk) exit ('Пустой запрос');
выполняется. $poisk то неопределена
2. Оператор exit останавливает работу скрипта и все что ниже него выводиться не будет
3. Переделка скрипта в нормальный рабочий вид

   
 
 автор: Владимир55   (11.07.2007 в 15:05)   письмо автору
 
   для: Владимир55   (11.07.2007 в 13:52)
 

Я понимаю, что все операторы работают правильно, но меня интересует, как избавиться от трех обозначенных проблем?

   
 
 автор: bronenos   (11.07.2007 в 15:28)   письмо автору
 
   для: Владимир55   (11.07.2007 в 15:05)
 

1, 2. if (isset($_POST['poisk'])) { } else { }
3. браузер при ф5 заново шлет запрос сам

   
 
 автор: Владимир55   (11.07.2007 в 16:26)   письмо автору
 
   для: bronenos   (11.07.2007 в 15:28)
 

Поставил вот такой код для пробы:

<form method="post">
<input type="text" name="poisk" size="25">
<input type="submit" value="Найти!">
</form>

<?php
$poisk 
$_POST['poisk'];

if (isset(
$_POST['poisk']))
    {
    echo 
"Ввод произошел. Введено: " ;
    echo 
$poisk ;
    }
else
    {
    echo 
"Здесь будут операции, выполняемые при остуствии ввода" ;
    }


Первые два вопроса ушли.

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

Полазив по Форуму поиском, я уже понял, что для избавления от этого надо запретить броузеру записать старый запрос в историю запросов (Trianon). Но мои попытки это сделать не увенчались успехом!

Что бы такое вставить в вышеприведенный код, чтобы избавиться от выводов результатов предыдущего поиска?

   
 
 автор: bronenos   (11.07.2007 в 16:30)   письмо автору
 
   для: Владимир55   (11.07.2007 в 16:26)
 

запрещать кеширование в смысле как?

   
 
 автор: Владимир55   (11.07.2007 в 16:44)   письмо автору
 
   для: bronenos   (11.07.2007 в 16:30)
 

Это вопрос, скорее, к : Trianon (05.06.2007 в 21:11) http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=38675

Но что-то же сделать можно? Странная какая-то заморочка...

Представляете, у меня это форма поиска, и получается, что при движении по сайту и возврату к главной странице поиск сам по себе начинается заново, выталкивая груду уже ненужной информации и загромождая весь экран! Мне это просто не годится! Да и не должно так быть - у других же работает как надо!

Как другие избавляются от повторной передачи формы броузером?

   
 
 автор: Владимир55   (11.07.2007 в 17:18)   письмо автору
 
   для: Владимир55   (11.07.2007 в 16:44)
 

Похоже, что единственный выход - это безусловный переход на другую страницу-пустышку, и затем возврат на главную таким же путем. Иначе - никак...

   
 
 автор: Владимир55   (11.07.2007 в 17:25)   письмо автору
 
   для: Владимир55   (11.07.2007 в 17:18)
 

Как оказалось при ближайшем рассмотрении, и у других такая же фигня http://www.sitemanager.ru/

   
Rambler's Top100
вверх

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