обнаружить бота с помощью переполнения стека

У меня есть страница index.php, и у меня есть скрипт для обнаружения бота, но он не работает должным образом. Если бот посещает index.php, то я хочу, чтобы welcome.php был включен. Если это оригинальный пользователь, то welcome.php не должен быть включен.
Это то, что я пробовал до сих пор:

   function is_bot(){
$botlist = array("Teoma", "alexa", "froogle", "Gigabot", "inktomi",
"looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory",
"Ask Jeeves", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot",
"crawler", "www.galaxy.com", "Googlebot", "Scooter", "Slurp",
"msnbot", "appie", "FAST", "WebBug", "Spade", "ZyBorg", "rabaz",
"Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot",
"Mediapartners-Google", "Sogou web spider", "WebAlta
Crawler","TweetmemeBot", "Butterfly", "Twitturls", "Me.dium",
"Twiceler", "Purebot", "facebookexternalhit",
"Yandex", "CatchBot", "W3C_Validator", "Jigsaw","PostRank",
"Purebot", "Twitterbot",
"Voyager", "zelist", "pingdom", "favicon");

foreach($botlist as $bot){
if(strpos($_SERVER['HTTP_USER_AGENT'],$bot)!==false)
return true;    // Is a bot
}
return false;    // Not a bot
}

Вот основная проблема, которую я получаю — следующее не сработало:

  if (is_bot()==true) {
session_destroy(); include_once('welcome.php'); exit; }

Затем я попробовал это, но это также не сработало:

  if (is_bot()) {
session_destroy(); include_once('welcome.php'); exit; }

Посоветуйте, пожалуйста, какие-либо решения для этой ситуации.

Всякий раз, когда я использую, как это работает

 if (is_bot())
$isbot = 1;
else
$isbot = 0;

1

Решение

Лучше улучшить вашу функцию is_bot и использовать регулярное выражение вместо долгого беспокойного поиска.

Нечто подобное ниже может быть более полезным.

function is_bot(){
preg_match('/bot|curl|spider|google|twitter^$/i', $_SERVER['HTTP_USER_AGENT'], $matches);

return (empty($matches)) ? false : true;
}
3

Другие решения

Я уверен, что проблема в том, что код делает работа (хотя плохо оптимизирована и отформатирована — @Имранрешение намного чище) но вы тестируете его неправильно.

Ваш Строка UA не содержит строку «bot» — вы не сервер. Используйте инструмент разработки Google Chrome, вот так;

  1. F12

  2. CTRL + СДВИГ + M

  3. UA коробка наверху
    и измените свою строку UA, притворившись кем-то другим, например, «Googlebot», а затем проверить его.

Просто посещая веб-сайт и переходя к своему, не имитируйте «запрос бота» с этого веб-сайта, это все же только вы!

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector