Гостевая книга , refresh...

  • Автор темы Crypton
  • Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Zetruger

ivan.chistyakov.name
всегда, в случае удачного POST запроса, приведшего к модификации данных, делай header('Location: ...')
 

Sokil.Dmytro

Новичок
учите английский

алгоритм

если(ПОСТ содержит сообщение)
{
добавить сообщение
хедер(локейшн)
здохнуть
}

вывести сообщение

хедер всегда идет до вывода ЛЮБОГО текста иначе получится твой варнинг
 

SlavikSG

Новичок
Вылез другой баг. Как-то я его не сразу заметил.

В общем, если после записи данных в файл Гостевой применить строку:
Header("Location:".$_SERVER['PHP_SELF']);
То:
У первых моих "тестеров", страница после нажатия на кнопку "Записать" перенаправляется на моего хостера и они прямиком попадают сюда:
http://catalog.hostland.su/catalog.html?error=403&r=&host=www.slaviksg.tu1.ru
У других, вообще ничего не обновляется, пока они сами не нажмут кнопку "Обновить" в браузере. И только тогда смогут увидеть свою запись.
У третьих, все обновляется, новая запись в гостевой появляется, но если затем принудительно нажать в браузере кнопку обновить, то они попадают, опять же, к хостеру:
http://catalog.hostland.su/catalog.html?error=403&r=&host=www.slaviksg.tu1.ru
(именно так происходит у меня самого)

В общем, браузеры у всех трех бета-тестеров ведут себя как-то совершенно непредсказуемо.

А если эту строку не применять совсем, то у всех все начинает работать корректно. Все обновляется. Все видно. Все появляется. Но зато, после нажатия кнопки "Обновить", будет каждый раз появляться новая запись в Гостевой. То есть, тоже что и было у меня в самом начале.

Не знаю что мне теперь делать. Помогите, плиииз! :(
 

Zetruger

ivan.chistyakov.name
кто тебе посоветовал делать?
Header("Location:".$_SERVER['PHP_SELF']);

стукни его по голове!

а сам перед тем как что-то делать разберись что содержит переменная $_SERVER["PHP_SELF"]

Header("Location: http://".$_SERVER["SERVER_NAME"].$_SERVER['PHP_SELF']);
 

SlavikSG

Новичок
Автор оригинала: Zetruger
кто тебе посоветовал делать?
Header("Location:".$_SERVER['PHP_SELF']);

стукни его по голове!

а сам перед тем как что-то делать разберись что содержит переменная $_SERVER["PHP_SELF"]
Дык, ессно разбирался! Пытался, во всяком случае...

Эта ячейка массива $_SERVER['PHP_SELF'] содержит путь к моей Гостевой книге и выглядит это значение так:
/guestbook/index.php

Этой переменной $_SERVER['SERVER_NAME'] я точно сам бы не догадался воспользоваться, но зато я догадался написать просто и в тупую так:
Header("Location: http://www.slaviksg.tu1.ru/guestbook/index.php");
И эффект был точно таким же, как я описал постом выше.

Твоим способом я, разумеется, тоже только что воспользовался:
Header("Location: http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']);
Но учитывая, что это тоже самое, что написать весь путь в тупую и руками, эффект тот же. :(

Пока я продолжаю оставаться в растерянности.
 

HraKK

Мудак
Команда форума
Beavis
И что должна обозначать эта хреновина по ссылке? если ее нефига не видно?
 

SlavikSG

Новичок
Автор оригинала: Zetruger
а в чем вопрос то?
Я подробно писал выше.
Повторюсь. Вопрос в том, что с применением "этой строки" происходят глюки после добавления записи в Гостевую книгу. Кого-то перебрасывает не туда, кто-то не видит сразу обновления страницы и так далее... А если эту строку не применять вообще, то у всех все начинает работать нормально, НО ОСТАЕТСЯ ОДИН НЕПРИЯТНЫЙ БАГ. Это когда пользователь после добавления в Гостевую книгу новой записи страницу не закрывает, а тупо нажимает в браузере на кнопку "Обновить". В этот момент его запись записывается в Книгу еще раз. Сколько раз нажмет "Обновить", столько раз и появится новая запись. И так до бесконечности. А я хочу это запретить. В этой теме посоветовали избавится от этого методом посылки заголовка - Header(...). И это действительро работает. Новая запись в книге, после нажатия кнопки "Обновить" не появляется. Но при этом и начинает все глючить неслабо. :(
 

Zetruger

ivan.chistyakov.name
SlavikSG
если указать в header жестко полный и правильный путь
то перекидывать будет жестко в одно и тоже место

по поводу отсутствия обновления то это результат кеширования страницы браузером

просто в начале кода добавь
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
 

Quessir

Новичок
А у меня такой вопрос немного не в тему. Как здесь на форуме отлавливается "рефреш"? Ну, там еще бан ставится.
 

SlavikSG

Новичок
Автор оригинала: HraKK
SlavikSG
Смени хостинг.
Кстати, я ждал. Посоветуют мне это или нет?
Посоветовали. :)

Просто, я тоже подумал, что может в хостере дело. Вроде, в теории, по учебнику, все должно работать на ура. Но не пашет.

Сори, не в тему (больше не буду).
А какой есть хороший хостер отвечающий трем условиям?
1. Стопудово халявный (пусть, конечно, с рекламой).
2. С поддержкой PHP
3. С поддержкой MySQL

Сегодня вечером еще проверю все это дело на своем личном веб-серваке. Жаль только что IP-адрес у меня не публичный. Из "внешки" не виден. Если все будет путем, то может и точно в кривом хостере дело? Или может их реклама, которую они пихают на каждую страничку сайта, все портит.

-~{}~ 18.07.07 17:22:

Автор оригинала: Zetruger
SlavikSG
если указать в header жестко полный и правильный путь
то перекидывать будет жестко в одно и тоже место
Вот и я сильно удивляюсь, что не работает. Во всяком случае у одного из тестеров. У меня лично работает. Но только один раз, когда добавляется новая запись. Я нормально при этом остаюсь в своей Гостевой и свое обновление вижу. Но если я затем сам, принудительно, после добавления новой записи, нажму на "Обновить", то окажусь черт знает где. Блин! И только если я в браузере опять наберу полный путь к своей Гостевой книге, то снова попаду на нее.

Автор оригинала: Zetruger
по поводу отсутствия обновления то это результат кеширования страницы браузером просто в начале кода добавь
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
А вот это я обязательно сделаю. Спасибо!
 

Beavis

Banned
HraKK
надо было догадаться удалить .th из ссылки) это был квест для опытных пользователей PC) не все справились
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху