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

HTML+CSS+JavaScript

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

 

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

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

тема: REFERER
 
 автор: brokonyer   (31.08.2007 в 17:21)   письмо автору
 
 

Доброго времени суток, я тут поискал но не нашел ответ на следующие:
Как сделать так чтоб при редиректе внутри сайта Реферер во всех браузерах передавался?
Пробовал редирект с Мета тегом Рефреш

<HTML>
<HEAD>
        <META HTTP-EQUIV='Refresh' CONTENT='0; URL=/index.php?pam-param'>
 </HEAD>
</HTML>

Реферер передается только в Опере.

Пробовал с помощью хидера

<?
  ob_start
();
  
header("location: /index.php?pam-param");
  
ob_end_flush();
?> 


в этом случае Реферер опять же правильно передается в Опере, в IE не передается, в Firefox передается предыдуший URL от настоящего Реферера.
Вот думаю что мне делать, сделать с JavaScript-ом думаю возможно, но не желательно, поэтому меня интересует все варианты без JavaScript-а

   
 
 автор: brokonyer   (31.08.2007 в 17:33)   письмо автору
 
   для: brokonyer   (31.08.2007 в 17:21)
 


<?
function GoURL($url){

?>
<Script language="JavaScript">window.location = '<?=$url?>';</Script>
<?
}
?>

Проверил с помощью JavaScript-а, в Firefox и в Опере все работает, а в IE Реферер не передается.

   
 
 автор: sim5   (31.08.2007 в 17:56)   письмо автору
 
   для: brokonyer   (31.08.2007 в 17:33)
 

А так:
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=http://dns/index.php?pam-param'>

   
 
 автор: brokonyer   (31.08.2007 в 18:07)   письмо автору
 
   для: sim5   (31.08.2007 в 17:56)
 

Без разницы, получился тоже самое что и без. Работает только в Опере. в Мозиллу и ИЕ не передается.

   
 
 автор: Lelik   (31.08.2007 в 18:31)   письмо автору
 
   для: brokonyer   (31.08.2007 в 18:07)
 


<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/index.php?pam=param'> 

[поправлено модератором]

   
 
 автор: Bouncer   (01.09.2007 в 00:21)   письмо автору
 
   для: brokonyer   (31.08.2007 в 17:21)
 

Примерная схема такова:
(1) Сайт -> (2) Твой сайт -> (3) Твой сайт нужная страница

На этапе (2) прописываешь:
<?
header("Location: /index.php?referer=".$_SERVER['HTTP_REFERER']);
exit;
?>

На этапе (3) прописываешь:
<?
echo $_GET['referer']; // будет выведен адрес (1) Сайта
?>

Если сайт (1) был поисковой системой, то полезно узнать по какому запросу пришел посетитель, для этого использую систему Referer: http://referer.mixed.ru
На сайте подробная инструкция.

   
 
 автор: brokonyer   (01.09.2007 в 14:06)   письмо автору
 
   для: Bouncer   (01.09.2007 в 00:21)
 

Скажу суть для чего это, тогда может вам будет понятно.

На сайте есть разделы, когда какой то раздел не найден, он ссылается на index.php?p=error&num=404
А в этом странице стоит Реферер, где он должен определить с какой страницы был редирект, и пишет что это страница не найден. Как параметр и так можно добавить, в этом случае даже Реферер не понадобиться, а это не желательно.

   
 
 автор: sim5   (01.09.2007 в 14:41)   письмо автору
 
   для: brokonyer   (01.09.2007 в 14:06)
 

На стороне сервера проверяйте - есть такой раздел или нет, если нет делайте перенаправление куда вам нужно с помощью header, зачем вообще вам refresh нужен в этом случае?

   
 
 автор: brokonyer   (01.09.2007 в 14:58)   письмо автору
 
   для: sim5   (01.09.2007 в 14:41)
 

У меня стоит функция

<?php
 
function GoURL($url){

// вариант 1
?>
<HTML>
<HEAD>
        <META HTTP-EQUIV='Refresh' CONTENT='0; URL=<?=$url?>'>
 </HEAD>
</HTML> 
<?
}
?>


И если какой то раздел не найден, то пользуясь этим функцием направляю на index.php?p=error&num=404

Тут я вместо Рефреш протестил эти варианты, результат тот же, IE не получает Реферер.


<?php
 
function GoURL($url){

// вариант 2
?>
<Script language="JavaScript">window.location = '<?=$url?>';</Script>
<?
}
?>



<?php
 
function GoURL($url){

// вариант 3
header("location: ".$url); 
}
?>


Тестил на IE, Opera, FireFox. Результаты выложил на верху .

На данный момент главная задача получить Реферер на IE при редиректе.

   
 
 автор: sim5   (01.09.2007 в 15:33)   письмо автору
 
   для: brokonyer   (01.09.2007 в 14:58)
 

Я не понимаю, в чем у вас проблема - получить реферер? А чем вас не устраивает $_SERVER['HTTP_REFERER']? Уж этот элемент массива $_SERVER никак не будет зависить от браузера.

   
 
 автор: brokonyer   (01.09.2007 в 15:46)   письмо автору
 
   для: sim5   (01.09.2007 в 15:33)
 

Именно зависить

if($HTTP_SERVER_VARS) $__url['referer'] = $HTTP_SERVER_VARS['HTTP_REFERER']; 
     elseif($_SERVER) $__url['referer'] = $_SERVER['HTTP_REFERER']; 
          else $__url['referer'] = "";


Реферер регулируется браузером
$__url['referer'] во всех случиях возвращается пустой в IE, в остальных браузерах почти нормально (нормально варианте 2, Реферер показывает в Opera и в Firefox)

   
 
 автор: sim5   (01.09.2007 в 16:23)   письмо автору
 
   для: brokonyer   (01.09.2007 в 15:46)
 

Я за своим IE такой странности не наблюдаю, у меня как не странно $_SERVER['HTTP_REFERER'] не возвращает пустой строки, а от вашего условия проверки у меня мозги закипели :)

   
 
 автор: brokonyer   (01.09.2007 в 16:32)   письмо автору
 
   для: sim5   (01.09.2007 в 16:23)
 

Дело в том что при помощи редиректа Реферер теряется в IE, по крайном мере используя эти 3 варианты, нужен такой способ редиректа чтоб он не терялся в IE, к чему я уже не уверен что есть такой способ.

   
 
 автор: sim5   (01.09.2007 в 16:40)   письмо автору
 
   для: brokonyer   (01.09.2007 в 16:32)
 

Зачем вам редирект? Вам идет на сервер запрос на страницу - вы ведь как-то определяете есть или нет такая страница. Неужели нельзя сразу перенаправить пользователя в нужное место, если запрашиваемой страницы нет?

   
Rambler's Top100
вверх

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