Метка: php

PHP: Включение и отключение предупреждений и ошибок

Включение ошибок и предупреждений в файле php.ini

Для включения вывода всех ошибок и предупреждений, добавьте в файл php.ini следующие строки:

error_reporting = E_ALL
display_errors = On
display_startup_errors = On

Включение ошибок и предупреждений в PHP-скриптах

Чтобы включить вывод ошибок и предупреждений в PHP-скриптах, добавьте в начало нужного .php файла следующие строки:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

Отключение ошибок

Для отключения вывода ошибок, используйте:

ini_set('display_errors', 'Off');

Включение ошибок и предупреждений в файле .htaccess

Для включения вывода ошибок и предупреждений через .htaccess, добавьте следующие строки:

php_value display_errors 1
php_value display_startup_errors 1
php_value error_reporting E_ALL

Виды ошибок

  • E_ALL: все ошибки
  • E_ERROR: критические ошибки
  • E_WARNING: предупреждения
  • E_PARSE: ошибки синтаксиса
  • E_NOTICE: уведомления (ненормальный код)
  • E_CORE_ERROR: ошибки ядра
  • E_CORE_WARNING: предупреждения ядра
  • E_COMPILE_ERROR: ошибки компиляции
  • E_COMPILE_WARNING: предупреждения компиляции
  • E_USER_ERROR: пользовательские ошибки
  • E_USER_WARNING: пользовательские предупреждения
  • E_USER_NOTICE: пользовательские уведомления

Порядок обработки ошибок

Сначала учитываются параметры из php.ini, затем из .htaccess, и, наконец, из кода PHP-скрипта.

Как отправить email в формате html с помощью WordPress правильно

Вы можете отправлять электронные письма с помощью WordPress и PHP-скриптов. Вот пример простого PHP-скрипта, который можно использовать для отправки электронной почты через WordPress:

// Устанавлием возможность отправки письма в виде html
add_filter('wp_mail_content_type', function( $content_type ) {
            return 'text/html';
});
// Отправляем письмо
$mail_sent = wp_mail($to, $subject, $body, $headers);

// Проверяем результат отправки письма
if ($mail_sent) {
    echo 'Письмо успешно отправлено!';
} else {
    echo 'Ошибка при отправке письма.';
}

Можно отправить и просто php функцией mail(). Однако, для этого в WordPress ест своя функция — wp_mail();

Вот ее параметры:

wp_mail( string|string[] $to, string $subject, string $message, string|string[] $headers = ”, string|string[] $attachments = array() ): bool

Sends an email, similar to PHP’s mail function. — перевод Отправляет электронное письмо, аналогично функции почты PHP.

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

Тип контента по умолчанию — text/plain, что не позволяет использовать HTML.
Однако вы можете установить тип контента электронного письма, используя фильтр «wp_mail_content_type».

Кодировка по умолчанию основана на кодировке, используемой в блоге. Кодировку можно установить с помощью фильтра wp_mail_charset.

Передаваемые параметры

$to string|string[] required
Массив или список адресов электронной почты, разделенных запятыми, для отправки сообщения.
$subject string required
Тема письма.
$message string required
Содержание сообщения.
$headers string|string[] optional
Дополнительные заголовки. По умолчанию: »
$attachments string|string[] optional
Пути к файлам для прикрепления. По умолчанию: array[]

Возвращаться
bool Указывает, было ли письмо отправлено успешно.

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

4 способа получить cid (Client ID) пользователя Google Analytics

Для реализации различных задач, например — интеграции CRM и Google Analytics, трекинга открытия писем, отслеживания действий пользователя в офлайне нужен ClientID (cid) клиента.

По сути — это уникальный идентификатор пользователя (не человека, а связки компьютер-браузер), который выступает ключом в записи всех данных о посещениях сайта. И если мы хотим передавать какие-то данные в Google Analytics из вне сайта, и чтобы эти данные были связаны с посещениями пользователя, нам нужно знать этот ключ.
1 способ — на сайте установлен код Universal Analytics
Если на сайте есть только код Universal Analytics, то вызвав следующий код, в javascript переменной clientId окажется нужное нам значение:

ga(function(tracker) { var clientId = tracker.get('clientId'); });

2 способ, берем код на серверной стороне с помощью PHP

function gaParseCookie()
    {
        if (isset($_COOKIE['_ga'])) {
            $data = explode('.', $_COOKIE["_ga"]);
            list($version, $domainDepth, $cid1, $cid2) = $data;
            $contents = array('version' => $version, 'domainDepth' => $domainDepth, 'cid' => $cid1 . '.' . $cid2);
            $cid = $contents['cid'];
        }
        else {
            $cid sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
                // 32 bits for "time_low"
                mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
                // 16 bits for "time_mid"
                mt_rand( 0, 0xffff ),
                // 16 bits for "time_hi_and_version",
                // four most significant bits holds version number 4
                mt_rand( 0, 0x0fff ) | 0x4000,
                // 16 bits, 8 bits for "clk_seq_hi_res",
                // 8 bits for "clk_seq_low",
                // two most significant bits holds zero and one for variant DCE1.1
                mt_rand( 0, 0x3fff ) | 0x8000,
                // 48 bits for "node"
                mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
            );
        }
        return $cid;
    }

3 способ, когда мы берем cid с помощью JavaScript

function()
{
    var match = document.cookie.match('(?:^|;)\\s*_ga=([^;]*)');
    var raw = (match) ? decodeURIComponent(match[1]) : null;
if (raw)
{
match = raw.match(/(\d+\.\d+)$/);
}
var gacid = (match) ? match[1] : null;
if (gacid)
{
    return gacid;
}
}

4 способ, если мы используем Google Tag Manager
Во-первых, создаем новую переменную — ga cookie:

Во-вторых, создаем переменную типа Custom HTML — cid и пишем в неё:

function() {
  try {
    var cookie = {{ga cookie}}.split(".");
    return cookie[2] + "." + cookie[3];
  } catch(e) {
    console.log("No Universal Analytics cookie found");
    return "n/a";
  }
}

И далее, где нам это необходимо используем её {{cid}}, в ней будет хранится Client ID.