|
|
|
| Доброго времени суток, я тут поискал но не нашел ответ на следующие:
Как сделать так чтоб при редиректе внутри сайта Реферер во всех браузерах передавался?
Пробовал редирект с Мета тегом Рефреш
<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:21)
| |
<?
function GoURL($url){
?>
<Script language="JavaScript">window.location = '<?=$url; ?>';</Script>
<?
}
?>
|
Проверил с помощью JavaScript-а, в Firefox и в Опере все работает, а в IE Реферер не передается. | |
|
|
|
|
|
|
|
для: brokonyer
(31.08.2007 в 17:33)
| | А так:
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=http://dns/index.php?pam-param'> | |
|
|
|
|
|
|
|
для: sim5
(31.08.2007 в 17:56)
| | Без разницы, получился тоже самое что и без. Работает только в Опере. в Мозиллу и ИЕ не передается. | |
|
|
|
|
|
|
|
для: brokonyer
(31.08.2007 в 18:07)
| |
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=/index.php?pam=param'>
|
[поправлено модератором] | |
|
|
|
|
|
|
|
для: 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
На сайте подробная инструкция. | |
|
|
|
|
|
|
|
для: Bouncer
(01.09.2007 в 00:21)
| | Скажу суть для чего это, тогда может вам будет понятно.
На сайте есть разделы, когда какой то раздел не найден, он ссылается на index.php?p=error&num=404
А в этом странице стоит Реферер, где он должен определить с какой страницы был редирект, и пишет что это страница не найден. Как параметр и так можно добавить, в этом случае даже Реферер не понадобиться, а это не желательно. | |
|
|
|
|
|
|
|
для: brokonyer
(01.09.2007 в 14:06)
| | На стороне сервера проверяйте - есть такой раздел или нет, если нет делайте перенаправление куда вам нужно с помощью header, зачем вообще вам refresh нужен в этом случае? | |
|
|
|
|
|
|
|
для: 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 при редиректе. | |
|
|
|
|
|
|
|
для: brokonyer
(01.09.2007 в 14:58)
| | Я не понимаю, в чем у вас проблема - получить реферер? А чем вас не устраивает $_SERVER['HTTP_REFERER']? Уж этот элемент массива $_SERVER никак не будет зависить от браузера. | |
|
|
|
|
|
|
|
для: 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) | |
|
|
|
|
|
|
|
для: brokonyer
(01.09.2007 в 15:46)
| | Я за своим IE такой странности не наблюдаю, у меня как не странно $_SERVER['HTTP_REFERER'] не возвращает пустой строки, а от вашего условия проверки у меня мозги закипели :) | |
|
|
|
|
|
|
|
для: sim5
(01.09.2007 в 16:23)
| | Дело в том что при помощи редиректа Реферер теряется в IE, по крайном мере используя эти 3 варианты, нужен такой способ редиректа чтоб он не терялся в IE, к чему я уже не уверен что есть такой способ. | |
|
|
|
|
|
|
|
для: brokonyer
(01.09.2007 в 16:32)
| | Зачем вам редирект? Вам идет на сервер запрос на страницу - вы ведь как-то определяете есть или нет такая страница. Неужели нельзя сразу перенаправить пользователя в нужное место, если запрашиваемой страницы нет? | |
|
|
|