Почему при передаче php переменной в скрипт данные кодируются в uft-8?
Добрый день. Вопрос не из простых.
Касается он настройки платежной системы в интернет-магазине woocommerce. Проблема заключается в следующем: данные переменной php (почтовый адрес) передаются в скрипт почему-то закодированными. Для начала получаю данные поля email введенные пользователем. С помощью var_dump проверяю, что в переменной содержится верная информация (email o4137889@nwytg.net), но при передаче переменной внутрь скрипта accountId: '<?=$order->billing_email?>' получаю вот такую закодированную строку в **utf-8** accountId: 'o4137889@nwytg.net', Причем, не важно выводится ли она через сокращенные <?= ?> или <?php ?> и echo accountId: '<?php echo $billing_email ?>', , через переменную или напрямую - результат каждый раз идентичен. С чем это может быть связано и как исправить? Код: global $woocommerce; $order = new WC_Order( $order_id ); var_dump($order->billing_email); //o4137889@nwytg.net <script src="https://widget.cloudpayments.ru/bundles/cloudpayments"></script> <script> var widget = new cp.CloudPayments(); widget.<?=$widget_f?>({ // options <!-- /////////////??????????????? --> publicId: '<?=$this->public_id?>', //id из личного кабинета description: 'Оплата заказа <?=$order_id?>', //назначение amount: <?=$order->get_total()?>, //сумма currency: '<?=$this->currency?>', //валюта invoiceId: <?=$order_id?>, //номер заказа accountId: '<?=$order->billing_email?>', //идентификатор плательщика data: <?php echo (($this->kassa_enabled == 'yes') ? json_encode($kassa_array) : "{}") ?> }, function (options) { // success window.location.replace('<?=$this->get_return_url($order)?>'); }, function (reason, options) { // fail window.location.replace('<?=$order->get_cancel_order_url()?>'); } ); </script> Сервер находится на unix под управлением vesta cp с php версией 7.2 |
Цитата:
PS. Вернее в браузере будет текст, после выполнения функции, смотрите не на текст, а на длину строки в этой функции. |
Цитата:
invoiceId: <?=$order_id?>, //номер заказа проверил c помощью функции count(), но он выводит 1. А есть ли в природе дешифраторы этих html функций? Или в настройках сервера нужно что-то прописывать? |
Цитата:
Цитата:
Цитата:
Разбирайтесь. <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> </head> <body><h3>Не верь глазам своим</h3> <p>o4137889@nwytg.net</p> </body> </html> |
Цитата:
string(18) “o4137889@nwytg.net” Цитата:
|
Цитата:
|
Цитата:
С большим трудом, но удалось отыскать причину - поделюсь с вами. Есть такая зараза плагин Email Address Encoder (A lightweight plugin that protects email addresses from email-harvesting robots by encoding them into decimal and hexadecimal entities.) Вот он как раз и виноват во всем! Отключил - и все заработало! Спасибо за помощь и подсказки! |
Я не в курсе того, что кроме этой пакости делает этот плагин, но учтите, что адреса мыла сервером должны обязательно проверятся.
|
Часовой пояс GMT +3, время: 08:18. |