Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ссылка "назад" через _SERVER["HTTP_REFERER"]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
domen4you
Отправлено: 23 Августа, 2013 - 15:38:12
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Надо вывести ссылку "Назад" если реферер - мой сайт, не работает:

PHP:
скопировать код в буфер обмена
  1. if (isset ($_SERVER["HTTP_REFERER"]))
  2.         {
  3.         if (ereg("$_SERVER["HTTP_HOST"]", $_SERVER["HTTP_REFERER"])){
  4.         echo "<a href="{$_SERVER['HTTP_REFERER']}">Назад</a>";
  5.         }
  6.         }
 
 Top
Zuldek
Отправлено: 23 Августа, 2013 - 15:45:48
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Ссылка "Назад" никогда не делается через $_SERVER["HTTP_REFERER"]

(Отредактировано автором: 23 Августа, 2013 - 15:46:18)

 
 Top
domen4you
Отправлено: 23 Августа, 2013 - 15:48:03
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Zuldek пишет:
Ссылка "Назад" никогда не делается через $_SERVER["HTTP_REFERER"]

javascript:history.go(-1) ?
 
 Top
Zuldek
Отправлено: 23 Августа, 2013 - 15:50:35
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




и снова мимо.
Передаются параметры "Предыдущая страница" и "Следующая страница", первая, в зависимости от логики вашей навигации, содержит либо страницу с которой перешел пользователь на текущую, либо страницу выше по иерархической структуре сайта.

Почему все так сложно?

Потому, что $_SERVER['HTTP_REFERER'] есть не обязательный параметр, который вам клиент может и не передать, что вызовет ошибку вашего приложения. К тому же, нужно помнить о том, что для простой логики перехода на предыдущую страницу в браузере есть свои инструменты и их дублировать на сайте для пользователя нет смысла (не путать с навигационной строкой, в простонародье "крошкой").

(Отредактировано автором: 23 Августа, 2013 - 16:00:15)

 
 Top
domen4you
Отправлено: 23 Августа, 2013 - 16:01:12
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Zuldek пишет:
Потому, что $_SERVER['HTTP_REFERER'] есть не обязательный параметр, который вам клиент может и не передать, что вызовет ошибку вашего приложения

ну для этого проверка и делается
 
 Top
IllusionMH
Отправлено: 23 Августа, 2013 - 16:33:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




domen4you, вчера тоже делал кнопку назад. Как думаете, как быстро вы попадете в замкнутый круг если на всех страницах будет эта кнопка "назад"?
Как писали выше
domen4you пишет:
javascript:history.go(-1) ?

либо тоже самое через
CODE (javascript):
скопировать код в буфер обмена
  1. window.history.back();
 
 Top
Zuldek
Отправлено: 23 Августа, 2013 - 16:45:01
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Осталось только понять зачем Улыбка
 
 Top
domen4you
Отправлено: 23 Августа, 2013 - 17:00:35
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




IllusionMH пишет:
как быстро вы попадете в замкнутый круг если на всех страницах будет эта кнопка "назад"?

не на всех, конечно)
(Добавление)
IllusionMH пишет:
javascript:history.go(-1) ?

в логах сервера при таком подходе поисковик ищет файл с таким названием в текущей папке и естественно не находит
[Fri Aug 23 08:11:41 2013] [error] [client 85.26.234.166] File does not exist: /var/.../www/sait.ru/papka/javascript:history.go(-1)
(Добавление)
Zuldek пишет:
Осталось только понять зачем Улыбка

элемент навигации, сайт мобильный
 
 Top
esterio
Отправлено: 23 Августа, 2013 - 17:18:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)





domen4you пишет:
ereg("$_SERVER["HTTP_HOST"]", $_SERVER["HTTP_REFERER"]))

так для справкы - DEPRECATED
domen4you пишет:
File does not exist: /var/.../www/sait.ru/papka/javascript:history.go(-1)

Потому как в мобильниках нету псевдопротокола javascript(не учитиваю смартфоны). Вот он и шлет запросы вместо того чтоб испольнить.

П.С. полностю соглашусь. В браузерах есть свои интсрументы для истории
 
 Top
domen4you
Отправлено: 23 Августа, 2013 - 18:22:06
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




esterio пишет:
Потому как в мобильниках нету псевдопротокола javascript(не учитиваю смартфоны).

поэтому и ищу замену javascript, заработал такой вариант, можно его в таком виде использовать?
PHP:
скопировать код в буфер обмена
  1. ### назад ###
  2. if (isset ($_SERVER['HTTP_REFERER']))
  3.         {
  4.         $ref = $_SERVER['HTTP_REFERER'];
  5.         $host = $_SERVER['HTTP_HOST'];
  6.         if (strpos($ref, $host)){
  7.         echo ('<a href="'.$ref.'">Назад</a>');
  8.         }
  9.         }
  10. ########
 
 Top
NoPaper
Отправлено: 23 Августа, 2013 - 18:36:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




Лучше так:
 
 Top
IllusionMH
Отправлено: 23 Августа, 2013 - 18:59:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




domen4you, на чем тестировали? Лично я навесил событие на ссылку и все ок.
И не нужно писать это в href, для событий лучше использовать соответствующие атрибуты (onclick), а еще лучше навесить обработчик отдельно.
Можно примерно так
CODE (javascript):
скопировать код в буфер обмена
  1. jQuery('.back_arrow').click(function(){
  2.   window.history.back();
  3.   return false; //just in case
  4. });

либо аналогично на VanillaJS, и совсем элементарно если задать id
и на WP8 и на огрызке все ок.

(Отредактировано автором: 23 Августа, 2013 - 19:02:22)

 
 Top
domen4you
Отправлено: 23 Августа, 2013 - 20:08:27
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




IllusionMH пишет:
domen4you, на чем тестировали? Лично я навесил событие на ссылку и все ок.

у меня тоже ок, но в логах таких записей достаточно много
(Добавление)
IllusionMH пишет:
Можно примерно так

я пока-то PHP не очень, а яваскрипт вообще тёмный лес)

там было условие ещё проверки откуда переход, если с яндекса, например переход, то ссылка "назад" не нужна. JS в состоянии это учесть?
 
 Top
IllusionMH
Отправлено: 23 Августа, 2013 - 20:57:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




domen4you, ссылка назад должна быть ссылкой назад. Эта функция аналогична нажатию кнопки браузера, и я б обиделся если б получил другой результат. Если не ошибаюсь то со стороны JS этого проверить нельзя из-за политик безопасности.
domen4you пишет:
у меня тоже ок, но в логах таких записей достаточно много

Я же говорю, вы неправильно делаете! За href="javascript:someaction()" нужно бить по рукам. Прочтите хоть чуть-чуть про JS и навешивание событий. Уж лучше
CODE (javascript):
скопировать код в буфер обмена
  1. onclick="window.history.back();"

хотя и такого лучше избегать.
 
 Top
domen4you
Отправлено: 23 Августа, 2013 - 21:25:56
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




IllusionMH пишет:
Я же говорю, вы неправильно делаете! За href="javascript:someaction()" нужно бить по рукам

да, стояло так, пока в логах не увидел ошибки. Но такой вариант тоже где-то ведь вычитал, не мог я такое сам придумать)
(Добавление)
IllusionMH пишет:
domen4you, ссылка назад должна быть ссылкой назад.

она ей и остаётся, просто показывается не во всех случаях. Большей частью это качается вопросов SEO и посещения сайта роботами, как раз им я ссылку и не хочу показывать. Пока то что я на php слепил вроде работает, ошибки в логах исчезли.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB