Узнать все о посетителе. Определение поискового робота по User-Agent на PHP Фреймворк Bootstrap: быстрая адаптивная вёрстка

Лучший способ удержать пользователя на сайте, это позволить ему найти, то что он ищет. Если вы делаете для этого удобную систему, то уровень предпочтения вашего сайта будет расти и пользователь обязательно вернётся для того, чтобы найти то, что его интересует.

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

Я создам 2 файла: search.php, который будет содержать HTML и JavaScript. Второй файл, do_search.php будет содержать PHP код. Приступим к созданию первого файла:

PHP, jQuery search demo $(function() { $(".search_button").click(function() { // получаем то, что написал пользователь var searchString = $("#search_box").val(); // формируем строку запроса var data = "search="+ searchString; // если searchString не пустая if(searchString) { // делаем ajax запрос $.ajax({ type: "POST", url: "do_search.php", data: data, beforeSend: function(html) { // запустится до вызова запроса $("#results").html(""); $("#searchresults").show(); $(".word").html(searchString); }, success: function(html){ // запустится после получения результатов $("#results").show(); $("#results").append(html); } }); } return false; }); }); Попробуйте ввести слово ajax
Результаты для

В этом файле мы создали обычную HTML форму, которая посылает POST запрос в бэк энд - файлу do_search.php.

PHP код содержит комментарии, по которым вы с лёгкостью сможете понять работу скрипта. Если в базе данных нашлись совпадения, вы показываете их вашему пользователю, выделяя жирным те слова, которые искал пользователь.

Придадим всему этому немного CSS:

Body{ font-family:Arial, Helvetica, sans-serif; } *{ margin:0;padding:0; } #container { margin: 0 auto; width: 600px; } a { color:#DF3D82; text-decoration:none } a:hover { color:#DF3D82; text-decoration:underline; } ul.update { list-style:none;font-size:1.1em; margin-top:10px } ul.update li{ height:30px; border-bottom:#dedede solid 1px; text-align:left;} ul.update li:first-child{ border-top:#dedede solid 1px; height:30px; text-align:left; } #flash { margin-top:20px; text-align:left; } #searchresults { text-align:left; margin-top:20px; display:none; font-family:Arial, Helvetica, sans-serif; font-size:16px; color:#000; } .word { font-weight:bold; color:#000000; } #search_box { padding:4px; border:solid 1px #666666; width:300px; height:30px; font-size:18px;-moz-border-radius: 6px;-webkit-border-radius: 6px; } .search_button { border:#000000 solid 1px; padding: 6px; color:#000; font-weight:bold; font-size:16px;-moz-border-radius: 6px;-webkit-border-radius: 6px; } .found { font-weight: bold; font-style: italic; color: #ff0000; } h2 { margin-right: 70px; }

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

geolocation country-codes (17)

Я хочу получить страну посетителя через свой IP ... Сейчас я использую это (http://api.hostip.info/country.php?ip= ......)

Вот мой код:

Ну, это работает нормально, но дело в том, что это возвращает код страны, например, США или CA., а не все название страны, например, Соединенные Штаты или Канада.

Итак, есть ли хорошая альтернатива hostip.info?

Я знаю, что могу просто написать код, который в конечном итоге превратит эти две буквы в название всей страны, но я просто слишком ленив, чтобы написать код, содержащий все страны...

PS: По какой-то причине я не хочу использовать готовый CSV-файл или любой код, который захватит эту информацию для меня, что-то вроде ip2country готового кода и CSV.

Answers

Я использую ipinfodb.com api и получаю именно то, что вы ищете.

Его совершенно бесплатно, вам просто нужно зарегистрироваться у них, чтобы получить свой ключ api. Вы можете включить их php-класс, загрузив их со своего веб-сайта, или вы можете использовать формат url для извлечения информации.

Вот что я делаю:

Я включил их php-класс в свой скрипт и используя приведенный ниже код:

$ipLite = new ip2location_lite; $ipLite->setKey("your_api_key"); if(!$_COOKIE["visitorCity"]){ //I am using cookie to store information $visitorCity = $ipLite->getCity($_SERVER["REMOTE_ADDR"]); if ($visitorCity["statusCode"] == "OK") { $data = base64_encode(serialize($visitorCity)); setcookie("visitorCity", $data, time()+3600*24*7); //set cookie for 1 week } } $visitorCity = unserialize(base64_decode($_COOKIE["visitorCity"])); echo $visitorCity["countryName"]." Region".$visitorCity["regionName"];

$json = file_get_contents("http://freegeoip.appspot.com/json/66.102.13.106"); $expression = json_decode($json); print_r($expression);

У меня есть короткий ответ на этот вопрос, который я использовал в проекте. В моем ответе я считаю, что у вас есть IP-адрес посетителя

$ip = "202.142.178.220"; $ipdat = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=" . $ip)); //get ISO2 country code if(property_exists($ipdat, "geoplugin_countryCode")) { echo $ipdat->geoplugin_countryCode; } //get country full name if(property_exists($ipdat, "geoplugin_countryName")) { echo $ipdat->geoplugin_countryName; }

Я попробовал ответить Chandra, но моя конфигурация сервера не позволяет file_get_contents ()

PHP Warning: file_get_contents() URL file-access is disabled in the server configuration

Я изменил код Chandra, чтобы он также работал на таких серверах, используя cURL:

Function ip_visitor_country() { $client = @$_SERVER["HTTP_CLIENT_IP"]; $forward = @$_SERVER["HTTP_X_FORWARDED_FOR"]; $remote = $_SERVER["REMOTE_ADDR"]; $country = "Unknown"; if(filter_var($client, FILTER_VALIDATE_IP)) { $ip = $client; } elseif(filter_var($forward, FILTER_VALIDATE_IP)) { $ip = $forward; } else { $ip = $remote; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.geoplugin.net/json.gp?ip=".$ip); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $ip_data_in = curl_exec($ch); // string curl_close($ch); $ip_data = json_decode($ip_data_in,true); $ip_data = str_replace(""", """, $ip_data); // for PHP 5.2 see .com/questions/3110487/ if($ip_data && $ip_data["geoplugin_countryName"] != null) { $country = $ip_data["geoplugin_countryName"]; } return "IP: ".$ip." # Country: ".$country; } echo ip_visitor_country(); // output Coutry name ?>

Надеюсь, это поможет;-)

Вы можете использовать простой API от http://www.geoplugin.net/

$xml = simplexml_load_file("http://www.geoplugin.net/xml.gp?ip=".getRealIpAddr()); echo $xml->geoplugin_countryName ; echo ""; foreach ($xml as $key => $value) { echo $key , "= " , $value , " \n" ; } echo "";

Используемая функция

Function getRealIpAddr() { if (!empty($_SERVER["HTTP_CLIENT_IP"])) //check ip from share internet { $ip=$_SERVER["HTTP_CLIENT_IP"]; } elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) //to check ip is pass from proxy { $ip=$_SERVER["HTTP_X_FORWARDED_FOR"]; } else { $ip=$_SERVER["REMOTE_ADDR"]; } return $ip; }

United States geoplugin_city= San Antonio geoplugin_region= TX geoplugin_areaCode= 210 geoplugin_dmaCode= 641 geoplugin_countryCode= US geoplugin_countryName= United States geoplugin_continentCode= NA geoplugin_latitude= 29.488899230957 geoplugin_longitude= -98.398696899414 geoplugin_regionCode= TX geoplugin_regionName= Texas geoplugin_currencyCode= USD geoplugin_currencySymbol= $ geoplugin_currencyConverter= 1

У вас есть так много вариантов, с которыми вы можете

благодаря

Попробуйте этот простой код с одной строкой, вы получите страну и город посетителей со своего IP-адреса.

$tags = get_meta_tags("http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress=" . $_SERVER["REMOTE_ADDR"]); echo $tags["country"]; echo $tags["city"];

Много разных способов сделать это...

Решение №1:

Одна сторонняя служба, которую вы можете использовать, - http://ipinfodb.com . Они предоставляют имя хоста, геолокацию и дополнительную информацию.

Зарегистрируйтесь для ключа API здесь: http://ipinfodb.com/register.php . Это позволит вам получать результаты со своего сервера, без этого он не будет работать.

Скопируйте и пропустите следующий код PHP:

$ipaddress = $_SERVER["REMOTE_ADDR"]; $api_key = "YOUR_API_KEY_HERE"; $data = file_get_contents("http://api.ipinfodb.com/v3/ip-city/?key=$api_key&ip=$ipaddress&format=json"); $data = json_decode($data); $country = $data["Country"];

Даунсайд:

Цитата из их сайта:

Наш бесплатный API использует версию IP2Location Lite, которая обеспечивает более низкую точность.

Решение №2:

Эта функция вернет название страны, используя службу http://www.netip.de/ .

$ipaddress = $_SERVER["REMOTE_ADDR"]; function geoCheckIP($ip) { _get_contents("http://www.netip.de/search?query=".$ip); $patterns=array(); $patterns["country"] = "#Country: (.*?) #i"; $ipInfo=array(); foreach ($patterns as $key => $pattern) { $ipInfo[$key] = preg_match($pattern,$response,$value) && !empty($value) ? $value : "not found"; } return $ipInfo; } print_r(geoCheckIP($ipaddress));

Вывод:

Array ( => DE - Germany) // Full Country Name

Проверьте php-ip-2-country из code.google. База данных, которую они предоставляют, обновляется ежедневно, поэтому нет необходимости подключаться к внешнему серверу для проверки, если вы размещаете свой собственный SQL-сервер. Поэтому, используя код, вам нужно будет только ввести:

Пример кода (из ресурса)

Вывод

Array ( => 3585376256 => 3585384447 => RIPE => 948758400 => PL => POL => POLAND => 213.180.138.148 => 3585378964 => 127.255.255.255 => 127.255.255.255)

Вы можете использовать веб-сервис с сайта http://ip-api.com
в вашем php-коде, выполните следующие действия:

запрос имеет много другой информации:

Array ("status" => "success", "country" => "COUNTRY", "countryCode" => "COUNTRY CODE", "region" => "REGION CODE", "regionName" => "REGION NAME", "city" => "CITY", "zip" => ZIP CODE, "lat" => LATITUDE, "lon" => LONGITUDE, "timezone" => "TIME ZONE", "isp" => "ISP NAME", "org" => "ORGANIZATION NAME", "as" => "AS NUMBER / NAME", "query" => "IP ADDRESS USED FOR QUERY",)

вы можете использовать http://ipinfo.io/ чтобы получить информацию об ip-адресе. Его простота использования.

Выполнение функций по умолчанию

I) $Array = array("test1","test2","test3","test3"); unset($Array); ii) $Array = array("test1","test2","test3","test3"); array_pop($Array); iii) $Array = array("test1","test2","test3","test3"); array_splice($Array,1,2); iv) $Array = array("test1","test2","test3","test3"); array_shift($Array);

Script языка на Apache сервере.

index.php - самый распространенный стартовый файл для начала работы скриптового языка программирования PHP на WEB сервере, в основном Apache .

Для новичка стоит только знать, что большинство сайтов (sites) свою работу начинают именно с этого файла (file). Размещается файл в корне основного хранилища файлов сайта. Также может располагаться внутри директорий (directory ). Тогда Apache сервер будет искать и грузить в первую очередь index.php в запрашиваемой директории, если не прописано что-либо иное в файле настроек сервера htaccess

Как заставить Apache первым загружать index.php (options)

Как правильно делать:

# чтобы работа начиналась только с index.php DirectoryIndex index.php

Многие делают еще так:

# начинать запуск скриптов с проверки указанной последовательности DirectoryIndex index.php index.html index.shtml

Тут стоит немного объяснить алгоритм действий:

  • Пытаемся загрузить index.php .
  • Если index.php directory ), то пытаемся загрузить index.html .
  • Если index.html не обнаружен в корневом директории (directory ), то пытаемся загрузить index.s html
  • Есть много других опций (options) для управления загрузками, но это надо читать более расширенную спецификацию htaccess .

    Используют такой метод, как правило , в том случае, если хотят защитить index.php от сканирования на предмет различных уязвимостей, например:

    Index.php?mode=page&url="%20AND1="1

    Если index.php будет другой, то все, что идет после index.php, не имеет никакого значения. Но существуют другие способы определить, какой именно файл является главным загрузочным на WEB сервере. Так что особой безопасности от этого метода не получится. А вот неудобства использования возрастают. Поэтому к этому методу стоит относиться с особой осторожностью и продуманностью.

    Как скрыть index.php через htaccess

    На WEB сервере Apache должен быть включен модуль mod_rewrite . На сегодняшний день данный модуль включен практически у каждого , но в любом случае в этом нужно убедиться, иначе не получиться работать. Данный метод в основном используют SEO оптимизаторы.

    Код для скрытия index.php

    # включаем модуль mod_rewrite RewriteEngine on # все что после index.php отправлялось на главную командную строку RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/ # убираем index.php из командной строки, чтобы оставалась только полезная информация RewriteRule ^index\.php$ http://сайт/

    Как все запросы отправлять через index.php (redirect)

    Тут тоже в общем-то ничего сложного

    # Включаем работу mod_rewrite RewriteEngine on # если запрос не является файлом, то он будет отправляться на index.php # это делается, если ваш файл index.php обрабатывает не все, # что требуется, так как часто требуется разделить проект на более мелкие модули RewriteCond %{REQUEST_FILENAME} !-f # если запрос не является директорией, то он будет отправляться на index.php # это делается, чтобы директории типа /images/ не переадресовывались на index.php RewriteCond %{REQUEST_FILENAME} !-d # все остальное отправлять на index.php и там отрабатывать RewriteRule (.*) index.php [L]

    Как скачать index.php

    При соблюдении WEB мастером правил безопасности скачать index.php нельзя по определению.

    Можно скачать index.php только в случаях, если:

    • Неправильно прописаны настройки в (.htaccess) . Здесь виноват только сам WEB мастер.
    • Имеется доступ к серверу через FTP протокол . Самый распространенный способ. Жертва заманивается на заранее сделанный сайт так как надо под различными предлогами (Вы выиграли миллион, ваш аккаунт заблокирован в социальных сетях и так далее). Как только вы попадаете на необходимый сайт, у вас копируют cookies. После этого пытаются их использовать для входа уже на ваш сайт. Избежать этого легко, достаточно не пользоваться WEB интерфейсами для управления своим сайтом и не устанавливать на свой компьютер каких-либо программ от неизвестных вам авторов с неизвестных источников, например: всякие ускорители интернета или сомнительные toolbar для с сомнительной эффективностью, но очень сильной настойчивостью его установить.
    • На сервере установлен дополнительный скрипт (back door ). Через такой скрипт можно получить любой файл с сервера, при этом чтобы он не был выполнен обработчиком PHP. Такие файлы можно загрузить на сервер через распространенные и известные уязвимости систем управления контентом (CMS). Например: WordPress, Joomla, DLE, Drupal, Codeigniter и так далее. Далее, под видом аватара загружается специально сформированный .gif файл, который в последствии можно вызвать, зная его расположение на сервере жертвы. Если CMS неправильно обрабатывает такие файлы, то через него можно получить необходимые доступы к сайту. Либо на CMS, типа WordPress, Joomla и другие устанавливается широко разрекламированный како-либо plugin (например: php search index ), который вроде бы и выполняет свою функцию, но при этом сливает данные о сайте своим разработчикам, тем самым позволяя им использовать сайт так, как им захочется.

    Вот как-то так. Если у вас есть вопросы, задавайте их в комментариях, и в скором времени разъяснительный ответ появиться в этой статье.

    Фреймворк Bootstrap: быстрая адаптивная вёрстка

    Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

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

    Верстайте на заказ и получайте деньги.

    Бесплатный курс "Сайт на WordPress"

    Хотите освоить CMS WordPress?

    Получите уроки по дизайну и верстке сайта на WordPress.

    Научитесь работать с темами и нарезать макет.

    Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

    *Наведите курсор мыши для приостановки прокрутки.

    Назад Вперед

    Счетчик посещений сайта своими руками на PHP и MySQL

    В этом уроке мы с вами рассмотрим, как можно сделать простой счетчик посещений для вашего сайта. Пример мы будем реализовывать на PHP с использованием базы данных.

    Понятно, что сейчас существует множество готовых решений - начиная от liveinternet и mail.ru , и заканчивая Яндекс.Метрикой.

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

    Мы не будем фиксировать десятки и сотни параметров, как это делают монстры, вроде Яндекса. Я покажу вам сам принцип создания счетчика, а вы, при желании, сможете туда добавить больше функций, если это будет необходимо.

    Все исходники, используемые в процессе урока, приложены в архив вместе с видеоуроком.

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

    Под видео вы найдете сокращенную текстовую версию для этого видеоурока.



    Краткий обзор урока (все подробности смотрите в видео):

    Что нам понадобится?

    1. 4 практически идентичных файла, играющих роли разных страниц сайта (index.php, contacts.php, about.php и uslugi.php)
    2. Файл.htaccess для задания кодировки сервера в значение UTF-8
    3. Папка css с файлом стилей. Там прописано немного простейших стилей для наших страниц
    4. Папка inc с подключаемыми файлами. Их три:
    - файл подключения к базе данных
    - Файл, который будет подключаться в нужном месте страницы для вывода счетчика на экран
    - Основной скрипт, в котором прописана логика работы счетчика
    5. Папка admin с файлом index.php. В этом файле мы сможем просмотреть статистику посещений сайта


    Как что работает?

    1. Создаем проект в Денвере (либо на реальном сервере)

    Я создал в Денвере хост с именем statistic , а в папке www находятся все файлы сайта.


    2. Создаем базу данных

    Давайте перейдем к созданию базы, где у нас будет лежать вся информация. Назовем ее stats и создадим в ней две таблицы.


    Если вы не хотите вручную создавать таблицы, то можете воспользоваться дампом базы (приложен в дополнительных материалах) и выполнить SQL-запрос на вкладке SQL после создания базы.


    Итак, создаем первую таблицу . Назовем ее ips - в ней будут храниться идентификаторы IP-адресов и сами IP-адреса посетителей сайта.

    В таблице будут 2 поля:

    Id_id (int (12), первичный ключ, автоинкремент)- идентификатор IP-адреса;
    - ip_address (varchar (50)) - сам IP-адрес посетителя.

    В таблице будут 4 поля:

    visit_id (int (12), первичный ключ, автоинкремент) - идентификатор визита;
    date (date) - дата визита;
    hosts int(12) - количество хостов (уникальных посещений);
    views int(12) - количество хитов (просмотров страниц).

    В итоге база будет выглядеть вот так:


    3. Базовые положения

    Теперь, когда база данных создана, можно перейти к нескольким положениям, от которых мы будем отталкиваться при написании скрипта:

    1. Определять уникального посетителя мы будем по IP-адресу. 1 IP-адрес равен 1 уникальному посетителю (хосту).

    2. Заходы в течение 1 дня с одним и тем же IP-адресом не увеличивают количество уникальных посетителей в этот день.

    3. Любой заход на сайт в течение суток увеличивает счетчик посещений (хитов) на 1 (вне зависимости от того, совершается ли он с уникального за сегодня IP-адреса или нет).

    4. Начало суток мы будем определять следующим образом: когда человек заходит на сайт, мы будем делать проверку, существуют ли в таблице visits какие-либо записи за сегодняшнюю дату. Если нет, значит текущий посетитель является первым посетителем в данных сутках.

    5. Раз в сутки идет очистка таблицы с IP-адресами для того, чтобы мы могли заносить в нее IP-адреса уже текущего дня и собирать статистику именно по сегодняшним посещениям сайта (делается это как раз по факту обнаружения того, что к нам пожаловал первый в текущих сутках посетитель).

    4. Пишем файлы страниц сайта (index.php, contacts.php, about.php и uslugi.php)

    Поскольку все 4 файла страниц сайта практически идентичны, мы рассмотрим только страницу index.php . Остальные три страницы (contacts.php, about.php и uslugi.php ) отличаются только тэгами title и h2 , в которых написаны другие названия страниц.

    Итак, файл index.php :

    Главная

    Главная страница

    В самом начале мы подключаем файл сount.php , который содержит всю логику работы счетчика.

    В нижей части, перед закрывающим тэгом body мы подключаем файл show_stats.php , в котором содержится сам код счетчика, т.е. в этом файле уже формируется непосредственно то, что мы будем выводить на экран.

    Т.е. на каждой странице сайта у нас будет выводиться счетчик, и будет указано, сколько было за сегодня уникальных посетителей и просмотров. Этот файл мы разберем позже.

    5. Пишем файл стилей (style.css)

    #nav{ padding-left: 0px; } #nav li{ display: inline; margin: 5px; padding: 5px; font-family: Verdana; font-size: 15px; background-color: #F1EEF7; border: 1px solid silver; } #nav li a{ text-decoration: none; } #nav li:hover{ background-color: #8D93EF; }

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

    Кроме того, мы используем свойство display со значением inline для того, чтобы наше меню приняло горизонтальный, а не вертикальный вид.

    6. Пишем файл.htaccess

    На всякий случай создаем в корне сайта файл .htaccess с одной единственной директивой для задания кодировки UTF-8:

    AddDefaultCharset UTF-8

    Данный шаг может оказаться излишним, если кодировка сервера уже была установлена в это значение.

    7. Подключаемся к базе данных (db.php)