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 при следующей загрузке страницы.