IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Аномалии после редиректа (http://www.imho.ws/showthread.php?t=110192)

Self Author 24.10.2006 19:22

Аномалии после редиректа
 
Никак не могу разобраться, в чём причина...
Делаю редирект через header('Locate: ./?a=1')
Адрес в строке меняется на нужный, а страница не показывается. Висит белый лист...
Когда нажмёшь "обновить", то показывается нужная страница.
Проверял в разных браузерах - результат один и тот же, но с некоторыми нюансами:
Опера исходный код "белого листа" не показывает. Говорит, что загружено 0 байт.
ИЕ показывает вот что:
Код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
<BODY></BODY></HTML>

А вот Мозила - в коде показывает именно то, что должно быть!!! Но в окне отображает лишь после обновления.

Вот такая петрушка! :idontnow:
Пытался смоделировать ситуацию, чтобы выложить сюда весь код - не получилось. Всё работает нормально. Дать ссылку тоже не могу, потому что всё это в закрытой сети.

Буду рад, если подскажете направление, где копать, чтобы разобраться в этом.

voron 24.10.2006 20:54

Цитата:

Self Author:
Пытался смоделировать ситуацию, чтобы выложить сюда весь код - не получилось.
Как так не получилось? Вставь сюда код исходной страницы с примером твоего редиректа, посмотрим...

Self Author 24.10.2006 21:09

Цитата:

voron:
Как так не получилось?
Не получилось, потому что всё работает (в моделе).
Код... Сами строки вызова нормальные. (Я ж говорю, что адрес, на который делается редирект оказывается в строке адреса браузера). А весь код поставить - там под 300 строк.
Для того, чтобы смоделировать, нужно знать, в каком месте баг. Думал, что проблема в том, что скрипт вызывает сам себя. Написал такой файл:
Код:

<?php
if ($id=='test'){
        echo 'Выполнено';
}
if ($id=='go'){
        header ('Location: ./?id=test');
        exit;
}
echo '<a href="./?id=go">Поехали...</a>'
?>

А он работает нормально... :(

Если нести сюда код, то какие строки кода нести? (Все невозможно)

voron 24.10.2006 21:15

Неси строки где устанавливаешь редирект. Само собой притащи побольше кода именно этой части

Self Author 24.10.2006 21:22

Ну, не знаю, что из этого можно увидеть...
Код:

switch ($_GET['action']){
 case 'save':
  /*** Не позволим посторонним посылать данные, если это не ввод нового пользователя ***/
  if (($user!=0) && ($user!=$_SESSION['valid_user']) && !$_SESSION['admin']){
  Alert('Эта страница доступна только зарегистрированным пользователям.');
  ShowInfo($user);
  break;
  }
  if (!GetData($user)){                        //Проверка данных
  ShowForm($user);
  break;
  }
  SaveData($user, $user_info);        //Сохранение данных
  header('Location: /?reaction='.($user==0 ? '1' : '2'));
  exit;
  case 'autoresend':
  if ($_SESSION['noactive']=='naNoAuth'){
  DoAutoRequest($_SESSION['valid_user']);
  header('Location: /?reaction=7');
  exit;
  }else{
  header('Location: /?reaction=8');
  exit;
  }
 default:
  if (($user==0) || ($user==$_SESSION['valid_user']) || $_SESSION['admin']){
  ShowForm($user);
  }else{
  ShowInfo($user);
  }
}


EvroStandart 25.10.2006 11:19

Цитата:

Сообщение от Self Author
А весь код поставить - там под 300 строк.
Для того, чтобы смоделировать, нужно знать, в каком месте баг. Думал, что проблема в том, что скрипт вызывает сам себя. Написал такой файл:
Код:

<?php
if ($id=='test'){
        echo 'Выполнено';
}
if ($id=='go'){
        header ('Location: ./?id=test');
        exit;
}
echo '<a href="./?id=go">Поехали...</a>'
?>

А он работает нормально... :(

Попробуй в этот маленький файл понемногу копировать код из большого. И смотри при добавлении чего он начнёт глючить.

Self Author 25.10.2006 13:24

Цитата:

EvroStandart:
Попробуй в этот маленький файл понемногу копировать код из большого. И смотри при добавлении чего он начнёт глючить.
Есть у меня подозрение, что это не в коде дело.
Хотелось бы посмотреть, какие заголовки передаются браузеру в одном и в другом случае. Но функция headers_list работает только с php5, а у меня 4. Есть ли другой способ посмотреть переданные заголовки?

Self Author 25.10.2006 15:07

Нашёл ошибку!
Сам виноват...
Посмотрел заголовки у этой пустой страницы и увидел, что это работает моя же собственная фича, (криво работает). :)
Простите за беспокойство. :молись:


Часовой пояс GMT +4, время: 18:06.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.