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

Форум PHP

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

 

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

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

тема: как сделать, что при обновлении страницы удалялась глобальная переменная?
 
 автор: Bvz   (24.12.2009 в 16:29)   письмо автору
 
 

а то при обновлении $_POST['add'] не уничтожается

if (isset($_POST['add']))
    {
        if(!get_magic_quotes_gpc())
            {
                $name = mysql_escape_string($_POST['name']);
                $response = mysql_escape_string($_POST['response']);
            }
        else
            {
                $name = $_POST['name'];
                $response = $_POST['response'];
            }
    }
if (isset($_POST['press']))
    {
?>
<form name="add" action="index.php?module=guestbook" method="POST">
    <input type="text" name="name" value="" />
    <textarea name="response" rows="4" cols="20">
    </textarea>
    <input type="submit" name="add" value="Добавить отзыв" />
</form>
<?php
    
}

  Ответить  
 
 автор: sim5   (24.12.2009 в 16:33)   письмо автору
 
   для: Bvz   (24.12.2009 в 16:29)
 

И где тут обновление? О каком обновлении речь?

  Ответить  
 
 автор: Bvz   (24.12.2009 в 16:47)   письмо автору
 
   для: sim5   (24.12.2009 в 16:33)
 

я имел ввиду если обновить страницу например F5 то данная переменная сохраняется как ее удалить?

  Ответить  
 
 автор: Loki   (24.12.2009 в 16:52)   письмо автору
 
   для: Bvz   (24.12.2009 в 16:47)
 

не сохраняется, а передается броузером заново... о чем нормальные броузеры честно предупреждают.

  Ответить  
 
 автор: sim5   (24.12.2009 в 16:54)   письмо автору
 
   для: Bvz   (24.12.2009 в 16:47)
 

Делайте перенаправление.

  Ответить  
 
 автор: Bvz   (24.12.2009 в 16:57)   письмо автору
 
   для: sim5   (24.12.2009 в 16:54)
 

как?

  Ответить  
 
 автор: sim5   (24.12.2009 в 17:04)   письмо автору
 
   для: Bvz   (24.12.2009 в 16:57)
 

header()

  Ответить  
 
 автор: Bvz   (24.12.2009 в 17:14)   письмо автору
 
   для: sim5   (24.12.2009 в 17:04)
 

а куда его вставить? :)

  Ответить  
 
 автор: seitbekir   (24.12.2009 в 17:19)   письмо автору
 
   для: Bvz   (24.12.2009 в 17:14)
 

В начало кода

  Ответить  
 
 автор: sim5   (24.12.2009 в 17:38)   письмо автору
 
   для: seitbekir   (24.12.2009 в 17:19)
 

По каким соображениям?

  Ответить  
 
 автор: sim5   (24.12.2009 в 17:37)   письмо автору
 
   для: Bvz   (24.12.2009 в 17:14)
 

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

  Ответить  
 
 автор: seitbekir   (24.12.2009 в 19:00)   письмо автору
 
   для: sim5   (24.12.2009 в 17:37)
 

до передачи заголовка не должно быть не одного символа!
иначе облом!

<?
echo 'a';
header("Location: http://somwhere.dm");
?>

Работать не будет.

а если так:
<?
header
("Location: http://somwhere.dm");
echo 
'a';
?>

будет!

Источник:http://www.phpfaq.ru/headers

  Ответить  
 
 автор: sim5   (24.12.2009 в 19:07)   письмо автору
 
   для: seitbekir   (24.12.2009 в 19:00)
 

Уважаемый, я это знаю. Я вам совсем по другому поводу вопрос задал - по каким соображениям перенаправление обязательно в начало кода?
Логику работы кода вашего закладываете вы, а условия задает разработчик, но он совсем не заставляет вас этим писать код коряво, не логично.

  Ответить  
 
 автор: neadekvat   (24.12.2009 в 19:37)   письмо автору
 
   для: seitbekir   (24.12.2009 в 19:00)
 

Решил разжевать пост sim5.
Вы советуете сделать так:
<php
header();
код обработчика;
?>
Но куда логичнее и правильнее сделать так:
<php
код обработчика;
header();
?>
Вы ведь не будете спорить, что во втором варианте заголовок отправляется никак не в начале скрипта.

  Ответить  
 
 автор: Loneliness   (29.12.2009 в 06:39)   письмо автору
 
   для: neadekvat   (24.12.2009 в 19:37)
 

.

  Ответить  
 
 автор: Loneliness   (27.12.2009 в 22:44)   письмо автору
 
   для: Bvz   (24.12.2009 в 16:29)
 

Из формы можно передать дополнительным параметром в скрытом поле случайно сгенерированное число, записав его также в сессию. На странице получения данных из формы сравнить значения этого параметра принятого из формы и того, который в сессии, при их совпадении обработать POST-данные, при пустом параметре в сессии не обрабатывать POST-данные.. Затем обнулить параметр в сессии.

  Ответить  
 
 автор: sim5   (28.12.2009 в 05:52)   письмо автору
 
   для: Loneliness   (27.12.2009 в 22:44)
 

А хидера не достаточно?

  Ответить  
 
 автор: Bvz   (28.12.2009 в 13:51)   письмо автору
 
   для: sim5   (28.12.2009 в 05:52)
 

а если не получается использовать header, что еще можно использовать?

  Ответить  
 
 автор: sim5   (28.12.2009 в 14:27)   письмо автору
 
   для: Bvz   (28.12.2009 в 13:51)
 

Почему не получается?

  Ответить  
 
 автор: Bvz   (28.12.2009 в 16:25)   письмо автору
 
   для: sim5   (28.12.2009 в 14:27)
 

потому что до header ужу выводятся символы

  Ответить  
 
 автор: sim5   (28.12.2009 в 16:39)   письмо автору
 
   для: Bvz   (28.12.2009 в 16:25)
 

А разве трудно написать структуру кода так, чтобы все работало?

  Ответить  
 
 автор: Loneliness   (29.12.2009 в 06:25)   письмо автору
 
   для: sim5   (28.12.2009 в 05:52)
 

Достаточно, по сути, однако из личных наблюдений- порой браузеры не совсем хорошо реагируют на такие редиректы. Opera 9-10 периодически выдает, например, Moved Here со ссылкой на страницу редиректа. К тому же, после перенаправления зловредный пользователь может тыкать кнопку Назад, и обновлять страницу, творя повторы. Плюс редирект увеличит время перехода после отправки формы, поскольку сперва передаются данные на страницу с header, затем на страницу редиректа. По мне- зачем такие дополнительные движения и траффик для пользователя?

  Ответить  
 
 автор: sim5   (29.12.2009 в 07:01)   письмо автору
 
   для: Loneliness   (29.12.2009 в 06:25)
 

Не наблюдал ни разу подобного под Оперой, может быть это возникает только при некоторых условиях.
Не так часто требуются перенаправления, чтобы говорить о дополнительных движениях и трафике. Ну и добавить простейшую проверку не так сложно, да и форму можно выводить так, что действительна она будет только единожды, и кнопка Назад будет возвращать ее устаревший слепок, недействительный.
Кстати, по F5 переменная в сессии будет порождаться вновь, а значит не поможет.

  Ответить  
 
 автор: loneliness   (30.12.2009 в 00:23)   письмо автору
 
   для: sim5   (29.12.2009 в 07:01)
 

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

  Ответить  
 
 автор: Loneliness   (29.12.2009 в 06:24)   письмо автору
 
   для: Loneliness   (27.12.2009 в 22:44)
 

.

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

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