ajax js php, При передаче данных удаляет код


Если вы столкнулись с тем, что при передаче строки (с php кодом - <?php ?>), ajax запросом код удаляется, то в данной статье можно посмотреть и ознакомиться с преложенным вариантом решения проблемы.

О проблеме:
Вы могли использовать текстовый редактор (к примеру такой как ckeditor, sceditor, wysibb и другие) или к примеру просто textarea. Заполнили поле php кодом с открывающего тега или закрывающего тега:
<?php ?>

И отправили данные на php сервер, но php принял пустую строку.

Решение:
Одно из решений, которое нашел я это:
При передачи данных на стороне Js используем метод btoa для конвертации данных в base64 стандарт кодирования.

Если вам нужно работать в том числе и с utf-8 то:
let text = btoa(unescape(encodeURIComponent("Наш текст с <?php ?> кодом")));

Если без, то достаточно
let text = btoa("<?php ?>");

И передаем данные с помощью ajax.
$.ajax({
    url: "/your/url", // Ваш Url
    data: {
        'text': text,
    }
});

На стороне php:
Декодируем данные из base64 обратно в строку.
$decode = base64_decode(Данные из POST запроса);

И преобразуем специальные символы в html сущности:
$text = htmlspecialchars($decode);

В результате получаем:
string(46) "Наш текст с <?php ?> кодом"

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