Давайте сначала разберем некоторые функции и переменные:
http_response_code(400); - устанавливаем код возврата на 400, тот самый
response_code для колбэка в Pawn. Но почему именно 400 и еще в начале кода? Так мы сообщаем колбэку, что что-то пошло не так в коде и он не выполнился до конца или сообщение не отправился, почему в начале? Потому, что мы еще не знаем выполнится ли код до конца и сразу на всякие случае устанвливаем код возврата на 400, этот код не передастся в колбэк пока мы сами не выйдем из скрипта (то есть не закончим функцию как в Pawn с помощью return,
но тут мы будем использовать функцию die вместо return, чтобы завершить код).
Ладно пошли дальше:
$_POST['email'] и
$_POST['code']. Да да что-то знакомое, верно? Это те самые переменные которых мы передали через POST запрос, именно так мы можем обращаться к ним.
Вернемя к коду:
PHP код:
if ($IP !== $_SERVER['REMOTE_ADDR']) { //Если запрос отравлен не с вашего сервера то запрещаем доступ
die("Доступ запрещён");
}
elseif (strlen($_POST['email']) <= 0) {
die("Не указан электронный адрес!");
}
elseif (strlen($_POST['code']) <= 0) {
die("Не указан код подтверждение!");
}
Тут мы проверям были ли переданы все нужные нам переменные. Почти идентично с pawn strlen. Если не были указаны, то заканчиваем скрипт с передачей строк в колбэк, через функцию die. То что мы укажем внутри них передадутся в pawn колбэк, да это те самые response_message. Угадайте какой код ответа будет передан? Конечно, же 400, потому что мы указали их в начале и колбэк воспримет эти строки, как строки ошибок и выведит их в лог. Вот почему мы указали код ответа в начале.
Едем дальше.
PHP код:
$email = mb_convert_encoding($_POST['email'], "UTF-8", "Windows-1251");
$code = mb_convert_encoding($_POST['code'], "UTF-8", "Windows-1251");
Тут мы создаем 2 переменных
$email и
$code, записывая в них значение которых мы передали POST запросом, но меняя кодировку на UTF-8. Как все (наверное) знают, кодировка в samp = Windows-1251 или как еще называют Cyrilic-1251. А у большинство почтовых сервисов кодировка UTF-8, из за чего если пердадим переменные таким образом, как мы их получили, то в письме отобразяться иероглифы. Кстати насчёт кодировки, не забудьте сам скрипт сохранить в кодировке UTF-8!. И еще die передает значение в кодировке UTF-8 из за этого в игре это может отобразиться как иероглифы, эту проблему можно решить используя функцию mb_convert_encoding как это был продемонстрирован выше.
PHP код:
$message = 'Ваш код подтверждение: '.$code.;
Тут тело сообщение, который будет в письме. вместо
$code будет тот самый код подтверждение. Почему я вывел тело сообщение в php скрипт, а не передал его через HTTP? Ответ прост, во первых экономие памяти. Во вторых оформление: В php скрипте вы можете оформить свое сообщение который будет отправляться игроку, через html разметку. Но нельзя подключать CSS файлы или указывать style в head. Это не сработает. Сработает только такой трюк: Нужно указывать стиль в самом теге, пример:
<div class="test" style="background: black; color: white;">Hello, world!</div>. Примерно так, тестируйте, создавайте свои стили!
Дальше у нас идёт:
PHP код:
$headers = "From: Имя вашего сервера или проекта\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
Это дополнительный настройки сообщение, наверное тут всё понятно. Если не понимаете, не советую менять, но не запрещаю эксперементировать)))
PHP код:
if(mail($email, "Код подтверждение", $message, $headers))
http_response_code(200);
Вот оно, то место для чего было столько заморочек: отправка письма). Тут проверяем, если письмо успешно отправлено, то меняем код возврата на 200, вот тут уже можно менять так как уже все прошло отлично и мы должны сообщить об этом.
Заканчиваем скрипт, выходим из него.