<MyRusakov.ru />

Создание движка на PHP и MySQL 2.0

Создание движка на PHP и MySQL 2.0

Видеокурс "Создание движка на PHP и MySQL 2.0" научит Вас создавать профессиональные движки для сайтов на PHP и MySQL с использованием ООП и паттерна MVC.

В курсе разобрана вся теория по структуре движка: как всё устроено, какие должны быть объекты, какая у них иерархия и как они взаимодействуют между собой.

В практической части будет создан движок с чистого листа. Будет создано ядро, все адаптеры, все вспомогательные классы, а также классы для работы с объектами базы данных. И чтобы курс был максимально полезным, будет создан движок для сайта MyRusakov.ru.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Определение браузера пользователя через PHP

Определение браузера пользователя через PHP

Очень часто я слышу мнение, что через PHP невозможно узнать, какой браузер у пользователя, поскольку это серверный язык, а не клиентский. На самом деле, это далеко не так. Браузер - это клиент, а любой сервер имеет полное право знать информацию о клиенте, который к нему подключается, то есть о браузере. А как определить браузер через PHP, об этом Вы узнаете из этой статьи.

Для определения браузера пользователя в PHP есть массив $_SERVER, у которого есть элемент с ключом HTTP_USER_AGENT:

<?php
  echo $_SERVER["HTTP_USER_AGENT"];
?>

Вывод будет примерно таким: "Opera/9.80 (Windows NT 6.1; WOW64; U; ru) Presto/2.10.289 Version/12.02", если это Opera, либо таким: "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0", если клиент - это Firefox. И так далее, в любом браузере можно увидеть некое ключевое слово. Благодаря этому ключевому слову, без проблем удаётся однозначно определить браузер:

<?php
  $user_agent = $_SERVER["HTTP_USER_AGENT"];
  if (strpos($user_agent, "Firefox") !== false) $browser = "Firefox";
  elseif (strpos($user_agent, "Opera") !== false) $browser = "Opera";
  elseif (strpos($user_agent, "Chrome") !== false) $browser = "Chrome";
  elseif (strpos($user_agent, "MSIE") !== false) $browser = "Internet Explorer";
  elseif (strpos($user_agent, "Safari") !== false) $browser = "Safari";
  else $browser = "Неизвестный";
  echo "Ваш браузер: $browser";
?>

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (26):

lev_100rus lev_100rus 02.11.2012 19:07:40

Зачем эта статья если таковая уже есть? http://myrusakov.ru/php-var-server.html А сделать условие(if-else) думаю может каждый, кто хоть немного знает PHP

Ответить

Admin Admin 02.11.2012 20:29:58

Часто это спрашивают, а всё потому, что та статья написана о другом, а эта возможность упомянута там вскользь, и люди её просто не видят (как и саму статью). А теперь я буду целенаправленно отправлять сюда пользователей, чтобы максимально подробно давать ответ на данный вопрос.

Ответить

cyber93 cyber93 02.11.2012 19:35:18

Михаил, напишите какой-то уникальный способ защиты от накрутки голосваний, если пользователь не зарегистрирован. Ограничение по ip-адрес не пойдет, можно прокси использовать и динамический. Куки можно почистить. Если суммировать всю инфу пользователя (имя браузера, айпишник и т.д.), тоже не пойдет. Возможно вам известен другой способ, для 99,99% защиты от накрутки (для не незарегистрированных пользователей) ? Прошу написать статьи, в которой описаны все известные вам методы.

Ответить

Admin Admin 02.11.2012 20:33:40

Таких способов не существует. Ограничения по IP более, чем достаточно. А с куками будет ещё больше проблем у накрутчика. Тут надо понимать, что кто захочет, тот всегда накрутит. Но это вряд ли кому-то будет нужно. А от единичных бездельников, которые проголосуют 5 раз, вместо 1-го, потратив на это время в поиске новых и новых прокси, никакого вреда не будет.

Ответить

cyber93 cyber93 02.11.2012 22:12:55

Ну почему у накрутчика с куками будет больше проблем, чем со сменой айпи адреса ? Ведь чтобы айпишник сменить, придется переподключаться, что занимает время, а куки сразу можно потереть в настройках браузера. Лично я сам недавно на одном из сайтов за 7 часов проголосовал 500+ раз, просто выдернув из сайта скрипт голосования и поставив на ночь автокликер, которые переподключал сеть и обновлял скрипт и полетела вся надежность системы голосования к чертям. Все же хочется в будущем себя обезопасить от подобных изъянов.

Ответить

lev_100rus lev_100rus 03.11.2012 01:00:22

Вообще не догоняю зачем Вам это нужно то было? И вообще какой от этого смысл??? Нечем людям заняться...

Ответить

cyber93 cyber93 03.11.2012 01:14:38

Спросил, значит надо ! Например опросник на сайте создать или голосование публичное, например выбор сотрудника года, пример множество. Смысл есть во всем. Моё дело предложить тему для статьи, может свои идеи предложите, чем других критиковать ?

Ответить

lev_100rus lev_100rus 03.11.2012 01:53:34

Я Имел ввиду зачем Вам было нужно 500+ раз голосовать за 7 часов? Какой вам от того был толк? Типа спамера?

Ответить

cyber93 cyber93 03.11.2012 09:20:46

Аааа, Pardon. Просто там был уже лидер, нужно было его обогнать по голосам, а времени в обрез.

Ответить

Admin Admin 03.11.2012 10:12:18

Я имел ввиду и защиту по IP, и защиту по кукам. А не только по кукам. А что касается автокликеров, поставьте капчу. Понятно, что и её можно расшифровать, но не существует 100% защиты. А если голосование очень важное, то не надо его делать для всех желающих, сделайте только для зарегистрированных пользователей. В конце концов, не забывайте про математическую статистику. Если ежедневно было по 10-20 голосов, а потом вдруг было их 500, то очевидно, что это накрутка. Определяете, за что голосовали, и удаляете эти 500 голосов.

Ответить

cyber93 cyber93 03.11.2012 13:31:05

В общем понятно. На будущее пригодятся знания. Спасибо за помощь !

Ответить

Dante Dante 05.11.2012 00:21:37

echo "Ваш браузер: $browser"; Тогда уж лучше echo "Ваш браузер: {$browser}"; или я не прав? Подскажите пожалуйста!

Ответить

Admin Admin 05.11.2012 10:36:50

Зачем фигурные скобки? Это же не smarty.

Ответить

ppk-center ppk-center 23.02.2014 21:44:59

Правильно echo "Ваш браузер: ".$browser !

Ответить

kruty kruty 05.03.2014 21:01:33

Та хоч printf("Ваш браузер:%s",$browser); нічого не міняється крім функцій і синтаксису

Ответить

Ильюха Ильюха 14.09.2014 12:15:20

Михаил! Опера, Сафари и Хром, кажется, работают на одном движке - этот способ в этих браузерах не работает. Или сегодня это уже не так актуально?

Ответить

alexandrdante alexandrdante 14.09.2014 14:04:29

Ну,не совсем так.Типы клиентов разные)

Ответить

Ильюха Ильюха 14.09.2014 22:54:46

В данном примере идёт сравнение имён браузеров и данных $user_agent. Слово "Safari" встречается у Оперы, Хрома и самого Сафари. А Слово "Opera" вообще не найдёт совпадений: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 OPR/22.0.1471.50 Может в ранних версиях по другому было, но сегодня этот пример не проходит.

Ответить

ketovpavel ketovpavel 16.12.2014 02:37:17

Допишите если Internet Explore старше 10 версии, то условие будет таким elseif (strpos($user_agent, "Trident") !== false) $browser = "Internet Explorer 10";

Ответить

ketovpavel ketovpavel 16.12.2014 12:51:10

Полностью рабочий вариант по крайней мере для браузеров актуальных на данный момент: $user_agent_browser = $_SERVER["HTTP_USER_AGENT"]; if (strpos($user_agent, "Firefox") !== false) $browser = "Firefox"; elseif (strpos($user_agent, "OPR") !== false) $browser = "Opera"; elseif (strpos($user_agent, "Chrome") !== false) $browser = "Chrome"; elseif (strpos($user_agent, "MSIE") !== false) $browser = "Internet Explorer 7"; elseif (strpos($user_agent, "Trident") !== false) $browser = "Internet Explorer"; elseif (strpos($user_agent, "Safari") !== false) $browser = "Safari"; else $browser = "Неизвестный"; echo "Ваш браузер: $browser";

Ответить

avgustinaxii avgustinaxii 21.06.2015 10:30:32

только не $user_agent_browser = $_SERVER["HTTP_USER_AGENT"]; а $user_agent = $_SERVER["HTTP_USER_AGENT"]; либо дальше везде тоже надо писать $user_agent_browser

Ответить

ketovpavel ketovpavel 21.06.2015 11:42:23

$user_agent_browser - это ведь просто переменная, которую Вы создаёте сами, так что в моём варианте, да нужно везде писать $user_agent_browser

Ответить

paladinrus paladinrus 17.08.2015 12:22:17

К сожалению с новой оперой такой вариант не канает((( выводит что она гугл хром, кто знает как исправить???

Ответить

ketovpavel ketovpavel 17.08.2015 12:32:59

elseif (strpos($user_agent, "OPR") !== false) $browser = "Opera";

Ответить

paladinrus paladinrus 17.08.2015 13:28:06

Спасибо

Ответить

Ilia Ilia 03.02.2016 04:30:05

С браузером Microsoft Edge не прокатывает. Пишет "Ваш браузер: Chrome".

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.