Dolphin»Блоги


День Рождения Ноябрь 11, 1985

Условие (if else) в PHP

PHP
Хочу в своем посте кратко рассказать об условиях в php, для чего они нужны и как с ними работать. Начну конечно же с пояснения:
Условия в php - это часть скрипта, например которое может требовать что бы переменная соответствовала текущему времени суток, или чтоб переменная показывала информацию о том, что пользователь должен зарегистрироваться или авторизоваться, если смотрит гость, а если пользователь авторизован, то отображается другая информация.
И так переходим к первому примеру условия, которое называется if и выглядит примерно так:
    if (условие)
       {
          оператор
       }

Этот синтаксис говорит о том, что если условие соответствует, то выполняет свою работу оператор. Для лучшего восприятия приведу простой пример:
    $figure = 5;

    if ($figure > 3)
       {
           echo "<strong>$figure</strong> больше чем 3"; 
       } 

То есть если переменная $figure равна пяти, а в условии стоит цифра меньше пяти, то выйдет сообщение: 5 больше чем 3. Если же цифру три...

Как проверить существование метода в PHP

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

В PHP есть функция method_exists, чьё предназначение как раз таки проверять метод на существование. Делаем так:
$class = new className;                  # Подключаемся|Получаем класс
if (method_exists($class, 'methodName')) # Проверяем наличие метода в полученном классе
{
    echo 'Метод существует.';            # Если метод существует, выводим сообщение
}

Если метод существует, появится сообщение:
Метод существует.

Конечно вместо вывода сообщения, работаем с проверенным методом....

Сделать первую букву строки заглавной на PHP

Бывает необходимым сделать первую букву строки заглавной и это легко решается при помощи функции ucfirst, предназначение данной функции - преобразовать первый символ строки в верхний регистр. Делаем так:
$line = 'line example';
echo ucfirst($line);

На экране получим:
Line example

Все просто и понятно. Но, как вы могли заметить обрабатывали мы латинские символы, а что если мы сделаем тоже самое, но с кириллическими символами:
$line = 'пример строки';
echo ucfirst($line);

На экране будет:
пример строки

То есть преобразование не произошло... Есть вариант заменить функцию ucfirst на вот такую конструкцию:
mb_strtoupper(mb_substr($line, 0, 1)) . mb_substr($line, 1);

Где используются две функции:
  1. mb_strtoupper - преобразует строку в верхний регистр.
  2. mb_substr - возвращает часть строки.

Делаем так:
$line = 'пример строки';
echo mb_strtoupper(mb_substr($line, 0, 1)) . mb_substr($line, 1);

И получаем результат на экране:
Пример строки

Все работает! Получается тут: mb_strtoupper(mb_subst...

Как определить от куда пришёл пользователь на PHP

PHP
Сейчас мы с вами будем разбираться, как определить от куда пришел пользователь. Собственно тут и разбираться не в чем, для этого будем использовать элемент суперглобального массива $_SERVER - HTTP_REFERER.

Значение элемента $_SERVER['HTTP_REFERER'] - это адрес предыдущей страницы, от куда пришел пользователь по ссылке. Нам достаточно вывести значение переменной на экран:
echo $_SERVER['HTTP_REFERER'];

И мы увидим адрес страницы с которой перешел пользователь. Но есть один "промах", если пользователь не перейдет на страницу по ссылке, а введет в адресную строку адрес, где мы выводи значение переменной на экран, которого на самом деле нет, так как не было "предыдущей" страницы, то получим ошибку такого вида:
Notice: Undefined index: HTTP_REFERER in /.../.../.../

Решение может быть простым, просто перед выводом на экран значения, проверять переменную на пустоту, например, так:
echo isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'Адрес не определен.';

Ну или так:
if (isset($
...

Как получить локацию пользователя по IP адресу

Стояла задача получить локацию пользователя по его IP адресу. Для решения задачи, надо определить IP адрес посетителя, для этого я использую переменную из суперглобального массива $_SERVER['REMOTE_ADDR']. Дальше, используя полученный IP составить URL файла, который необходимо прочесть, читать файл будет функция file_get_contents. Читаемый файл находится на сайте http://ipinfo.io/ именно туда будем посылать запрос. Код читаемого файла написан в JSON, поэтому придется декодировать полученную строку в массив, для этого использую функцию json_decode. С решением разобрались, переходим к самому коду, код прокомментировал, для лучшего понимания, что происходит:
$ip   = $_SERVER['REMOTE_ADDR'];             # Получаем IP адрес пользователя
$url  = 'http://ipinfo.io/' . $ip . '/json'; # Составляем адрес для чтения 
$info = file_get_contents($url);             # Читаем файл
$info = json_decode($info, true);            # Декодируем JSON строку в массив

Теперь массив $info содержит в себе...