[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Похоже проблемы с постбэками...Не хотят работать в IE.
html85
Здравстуйте.
Наведите на мысль, в чем может быть дело.
Ситуация следующая.

Есть сайт. (php+html). Когда перемещаюсь по страничкам из-за прокси-сервера - то кнопка "Назад" не вызывает ошибки...когда без прокси - выдается ошибка "Невозможно отобразить страницу"...

Наведите на мысль...
Может быть как то нужно вручную с помощью HTML заставить кэшировать странички браузером.

Причем такая ошибка только без прокси сервера и с использованием броузера IE.

Вот коды и пример:

Страница index.php
Код
<?php
session_start();
include ('header.php');
print
'
<div align="center">
Вход пользователя:
<form action="main.php?action=main" method="post">
Имя:
<br>
<input type="text" name="uname" size="15" maxlength="20" value=""><br>
Пароль:
<br>
<input type="password" name="upassw" size="15" maxlength="20" value=""><br>
<br>
<input type="submit" value="Вход">
</form>
</div>
</BODY>
</HTML>
';
session_unset();
session_destroy();
?>


Страница main.php - много кода, поэтому приведу только тот, который критичен:

Код
include ('header.php'); //здесь исключительно "шапка" без всяких постбэков и т.д.
print "<div align=\"left\"><a href=\"java script:history.back()\" onMouseOver=\"window.status='Назад';return true\"><font color=\"red\">Назад</font></a></div>";//это для ручного back

if (isset($_REQUEST[session_name()])) session_start(); //стартуем сессию
//записываем данные из постбэка в сессию, при условии, что установлены
if (isset($_POST['uname']))  {$_SESSION['session_name']     =$_POST['uname'];}
if (isset($_POST['upassw'])) {$_SESSION['session_password'] =$_POST['upassw'];}

//Записываем действие для страницы в сессию - ну это можно вообще было не делать...
// из-за GETа разве может такая ошибка быть
if (isset($_GET['action'])) {$_SESSION['session_action']    =$_GET['action'];}
//теперь если посты не установлены получаю нужные переменные из сессий
if(isset($_SESSION['session_name']))   {$name = $_SESSION['session_name'];}
if(isset($_SESSION['session_action'])) {$action = $_SESSION['session_action'];}
if(isset($_SESSION['session_password'])) {$passw = $_SESSION['session_password'];}


ну и все...

далее начинается проверка на action...


Дак вот.
В Опере работает все ок! без прокси.


Что твориться в IE:
При переходе с main.php на какую-то другую страницу - а затем обратно(без всяких вставок и инсертов) по кнопке BACK вылазиет Невозможно отобразить страницу...



Спустя 1 час, 50 минут, 36 секунд (16.02.2008 - 15:40) VladimirS написал(а):
А по какому URL пытается перейти IE? Что в строке адреса?

Спустя 4 часа, 5 минут, 8 секунд (16.02.2008 - 19:46) Sylex написал(а):
То, что тебе показывает Опера, или Прокси - явно кэш. ИЕ в данном случае не кэширует. Скорее всего у тебя не работает и в Опере (видишь кэш). Попробуй отправлять заголовки в самом начале:
Код
Header("Expires: mon, 26 Jul 1997 05:00:00 GMT");
Header("Last-Modified: ".gmdate("D, d54 M Y H:i:s"). "GMT");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");


И еще вопрос, зачем в конце эти 2 строки?
Код
session_unset();
session_destroy();

Ты начинающий?

Спустя 1 день, 16 часов, 44 минуты, 10 секунд (18.02.2008 - 12:30) html85 написал(а):
вопрос снят. проверяю посты через доп скрипты и далее location.


И еще вопрос, зачем в конце эти 2 строки?

Код
session_unset();
session_destroy();

Ты начинающий?


при переходе на Index.php - должны уничтожаться все переменные сессии и т.д. и вообще она убиваться...чтобы нельзя было без пароля зайти...ну в общем это должно быть понятно (типа на всех страницах ссылка безопасный выход)...
ты - начинающий.

Спустя 4 часа, 59 минут, 39 секунд (18.02.2008 - 17:29) Sylex написал(а):
Цитата(html85 @ 18.2.2008, 15:30) [snapback]33893[/snapback]
вопрос снят. проверяю посты через доп скрипты и далее location.


И еще вопрос, зачем в конце эти 2 строки?

Код
session_unset();
session_destroy();

Ты начинающий?


при переходе на Index.php - должны уничтожаться все переменные сессии и т.д. и вообще она убиваться...чтобы нельзя было без пароля зайти...ну в общем это должно быть понятно (типа на всех страницах ссылка безопасный выход)...
ты - начинающий.

laugh.gif Тогда зачем session_start(); в начале?

Спустя 20 часов, 15 минут, 15 секунд (19.02.2008 - 13:45) html85 написал(а):
ну а ты попробуй без сессион старт...вот сам...и нам расскажешь....особенно когда первый вход...

Спустя 4 часа, 38 минут, 7 секунд (19.02.2008 - 18:23) Sylex написал(а):
Цитата(html85 @ 19.2.2008, 16:45) [snapback]33958[/snapback]
ну а ты попробуй без сессион старт...вот сам...и нам расскажешь....особенно когда первый вход...


Цитата
main.php?action=main


вот в той части и надо ловить - создавать сессию только тогда когда присваиваешь $_SESSION, и уничтожать ее нужно тока при LOGOUT;)

Спустя 14 часов, 15 минут, 17 секунд (20.02.2008 - 08:38) fedya написал(а):
session_start ставится до текста, иначе ошибка.

Спустя 1 час, 28 минут, 41 секунда (20.02.2008 - 10:07) Sylex написал(а):
Цитата(fedya @ 20.2.2008, 11:38) [snapback]34008[/snapback]
session_start ставится до текста, иначе ошибка.


Естественно.

Цитата
при переходе на Index.php - должны уничтожаться все переменные сессии и т.д. и вообще она убиваться...чтобы нельзя было без пароля зайти...


Т.е. на главной нет сессии, тогда зачем там session_start ?

Код
<form action="main.php?action=main" method="post">


Т.е. session_start должен быть в main.php wink.gif

Спустя 1 день, 7 часов, 50 минут, 16 секунд (21.02.2008 - 17:57) SmokeMD написал(а):
rolleyes.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.