class Exception implements Throwable {}
$body = file_get_contents( "https://api.exchangeratesapi.io/latest?symbols=USD,BRL" );
$json = json_decode($body);
$value = $json->rates->BRL;
if( !isBot() )
echo 'На сайте сейчас'.$bot ;
function isBot(&$botname = ''){
/* Эта функция будет проверять, является ли посетитель роботом поисковой системы */
$bots = array(
'rambler','googlebot','aport','yahoo','msnbot','turtle','mail.ru','omsktele',
'yetibot','picsearch','sape.bot','sape_context','gigabot','snapbot','alexa.com',
'megadownload.net','askpeter.info','igde.ru','ask.com','qwartabot','yanga.co.uk',
'scoutjet','similarpages','oozbot','shrinktheweb.com','aboutusbot','followsite.com',
'dataparksearch','google-sitemaps','appEngine-google','feedfetcher-google',
'liveinternet.ru','xml-sitemaps.com','agama','metadatalabs.com','h1.hrn.ru',
'googlealert.com','seo-rus.com','yaDirectBot','yandeG','yandex','YandexBot','YandexBot/3.0',
'yandexSomething','Copyscape.com','AdsBot-Google','domaintools.com',
'Nigma.ru','bing.com','dotnetdotcom'
);
foreach($bots as $bot) {
if (stripos($_SERVER['HTTP_USER_AGENT'], $bot) !== false) {
$botname = $bot;
return true;
}
}
return false;
}
$botname = '';
if(!isBot($botname)) {
// накручиваем счетчик если запрос не от бота
$click_info = mysql_query("UPDATE ad_stat_cleaned SET clicks=clicks+1 WHERE bid='$safe_id' AND date='$today'");
$click_user_info = mysql_query("INSERT INTO ad_stat (userinfo, IP, hash, ban_id, datetime, referer, position) VALUES ('$a', '$b', '$hash_input', '$safe_id', '$datetime', '$c', '$posit')");
$r28 = mysql_query("SELECT url AS url FROM `ad_banners` WHERE bid=$safe_id");
$row28 = mysql_fetch_array($r28);
header("Location: $row28[url]");
} else {
echo 'На сайте сейчас бот '.$botname;
}
че получаю по фактуКак этот список UA вообще соотносится с кодом выше? Какие выводы мы должны из него сделать?
В примере ниже, метод makeInterviewer(): Interviewer возвращает тип интерфейса Interviewer.Этот метод ничего не возвращает, а только объявляет требования к наследникам - они должны реализовать этот абстрактный метод и уже вернуть конкретный объект, реализующий интерфейс Interviewer.
interface Interviewer {
public function askQuestions();
}
abstract class HiringManager {
abstract public function makeInterviewer(): Interviewer;
public function takeInterview() {
$interviewer = $this->makeInterviewer();
$interviewer->askQuestions();
}
}
class TeamLead implements Interviewer {
public function askQuestions() {
...
}
}
class Boss extends HiringManager {
public function makeInterviewer(): Interviewer {
return new TeamLead();
}
}
student
- это таблица в базе данных stip
, а вы её как название БД передаёте. Какие есть идеи?Очень легко - нужно посчитать количество рабочих дней не включая первый и последний и умножить на количество секунд между 07:00:00 и 22:45:00. Потом, если первый день рабочий, прибавить количество секунд между началом этого дня (или 07:00:00, если таймстамп раньше) и 22:45:00. Потом, если последний день рабочий, прибавить количество рабочих секунд в нём.
http:// wrapper is disabled in the server configuration by allow_url_fopen=0
var_dump($mail->ErrorInfo);
Кавычки должны быть двойные и переменная $mail перезатирается.$mail->Body = ' $name отправил реквест <br><br> Его контактная информация: $phone $mail';
type=hidden
, а у вас в селекторе type=text
.Content-Type
уберите. После передачи клиенту cookie станут доступны через массив $_COOKIE при следующей загрузке страницы.
нынче не комильфо использовать php внутри html кода, то есть делать какие либо вставки php кодаДумаю, речь шла про то, что нужно использовать шаблонизаторы типа Twig, а не лапшу в стиле шаблонов Битрикса.