У меня есть страница 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;
Лучше улучшить вашу функцию is_bot и использовать регулярное выражение вместо длительного беспокойного поиска.
Что-то вроде ниже может быть более полезным.
function is_bot(){
preg_match('/bot|curl|spider|google|twitter^$/i', $_SERVER['HTTP_USER_AGENT'], $matches);
return (empty($matches)) ? false : true;
}
Я уверен, что проблема в том, что код действительно работает (хотя он плохо оптимизирован и отформатирован - решение @Imran намного чище), но вы его неправильно тестируете.
Ваша строка UA не содержит строку "бот" - вы не являетесь сервером. Используйте инструмент Google Chrome dev, например;
F12
CTRL + SHIFT + M
UA вверху и измените строку UA, чтобы притвориться кем-то другим, например, "Googlebot", а затем протестируйте его.
Просто посетив веб-сайт и вернувшись к нему, вы не подражаете "бот-запросу" с этого сайта, это все равно только вы!
if()
не имеет открывающего {
, поэтому }
после истинного возврата завершает foreach. считать скобки. у вас есть 2x {
и 3x }
- например, синтаксическая ошибка.
welcome.php
не найден)?