Как узнать с поисковой системы пришли на сайт?

Wordpreser
На сайте с 01.08.2013
Offline
47
1896

В общем суть такая,

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

Сайт на Вордпресе.

Делаю так в файле index.php


$ref = $_SERVER['HTTP_REFERER'];
$findme = array("google", "yandex", "mail", "rambler");
foreach($findme as $find){
$pos = strpos($ref, $find);
$res=0;
if ($pos === false) {
$res = 0;//строка не найдена
}
else
{
$res = 1;//строка найдена
setcookie("alow","1",time()+9999 ,'/' ); //Устанавливает куки чтобы если был переход из ПС то можно было ходить по сайту без проблем
}
}

if($_COOKIE['alow']=="1"||$res==1){


define('WP_USE_THEMES', true); //грузим WP
require( dirname( __FILE__ ) . '/wp-blog-header.php' ); //грузим WP


}
else
{
http_response_code(404); //Ошибка
echo "<br/><br/><br/><red>Ошибка</red>"; //Ошибка

}



Все отрабатывает вроде хорошо, но есть одно НО.

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

mendel
На сайте с 06.03.2008
Offline
183
#1

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

Шутку любишь над Фомой, так люби и над собой. (с) народ. Бесплатные списки читабельных(!) свободных доменов (http://burzhu.net/showthread.php?t=2976) (5L.com) Сайты, All inclusive. 5* (/ru/forum/962215)
Wordpreser
На сайте с 01.08.2013
Offline
47
#2

Это неполный скрипт, есть другая часть которая определяет бота по USER_AGENT -у и показывает сайт)

S
На сайте с 30.09.2016
Offline
469
#3
Wordpreser:
такое ощущение что $_SERVER['HTTP_REFERER'] пустой

Почти угадали. :)

В $_COOKIE пусто, пока не перезагрузили страницу. 🙅

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
mendel
На сайте с 06.03.2008
Offline
183
#4
Sitealert:
Почти угадали.

Так у него ведь :)

Wordpreser:
if($_COOKIE['alow']=="1"||$res==1)

А так то расшифровывать этот вордпресс-стайл код лень.

Потом окажется что неверно создается сам процесс перехода с поисковика, потом еще что-то.... советовать понатыкать var_dump-ов и смотреть что и как? Банально.

Тут 99% ошибка в самой постановке задачи. Вот с нее и стоит начать.

adel92
На сайте с 04.01.2012
Offline
334
#5

И если у кого то блокировщики рекламы стоят, имеют другого рефера, если что.

NVMe VDS (https://well-web.net/nvme-vps) с поддержкой 24/7 - от 545 руб.! Безлимитный хостинг (https://well-web.net/ssd-hosting) - от 129 руб.! Домен в подарок! Перенос бесплатно! Заказывайте сейчас, и получите скидку 50%! Заходи! (https://well-web.net/limited-offers)
mendel
На сайте с 06.03.2008
Offline
183
#6
adel92:
И если у кого то блокировщики рекламы стоят, имеют другого рефера, если что.

Да тут весь топик в принципе о том как правильно и эффекцивно отстреливать себе ногу. Всякие антишпионы, анонимайзеры, отключенные куки и прочие самострелы.

А потом окажется что целью такого мазохизма будет защита от копирования текста или еще какой-то другой фантастический сценарий.

Тут можно говорить бесконечно, например о подмене реферера их жавоскрипта или банальной ссылке с сайта yandexhacker.ukoz.ru.

S
На сайте с 30.09.2016
Offline
469
#7
mendel:
Так у него ведь

Так-то оно так, но после присвоения единички нет выхода из цикла, и следующая итерация присваивает нолик.

mendel
На сайте с 06.03.2008
Offline
183
#8
Sitealert:
Так-то оно так, но после присвоения единички нет выхода из цикла, и следующая итерация присваивает нолик.

Ы)))) Это в цикле, да. Ну вот это уже ответ почему глючит. Но по задумке ТС явно рассчитывал на рес==1, а не на куку.

Wordpreser
На сайте с 01.08.2013
Offline
47
#9

да, там был break, но я крутил туда сюда и убрал, проблема уже неактуальна)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий