Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Проблема с htmlspecialchars()


Unikal

Recommended Posts

Версия магазина 0.1.4 (обновленная с 0.1.3 путем копирования измененных файлов)В журнале ошибок в админке появляются следующие замечания:

2010-11-08 15:45:27 - PHP Notice: Undefined index: firstname in /home/u/****/****/public_html/catalog/controller/checkout/address.php on line 3132010-11-08 15:45:27 - PHP Notice: Undefined index: lastname in /home/u/****/****/public_html/catalog/controller/checkout/address.php on line 3172010-11-08 15:45:27 - PHP Notice: Undefined index: address_1 in /home/u/****/****/public_html/catalog/controller/checkout/address.php on line 3212010-11-08 15:45:27 - PHP Notice: Undefined index: city in /home/u/****/****/public_html/catalog/controller/checkout/address.php on line 3252010-11-08 15:45:27 - PHP Notice: Undefined index: country_id in /home/u/****/****/public_html/catalog/controller/checkout/address.php on line 3312010-11-08 15:45:27 - PHP Notice: Undefined index: zone_id in /home/u/****/****/public_html/catalog/controller/checkout/address.php on line 3432010-11-09 15:10:26 - PHP Notice: Undefined index: default in /home/u/****/****/public_html/admin/view/template/sale/customer_form.tpl on line 1682010-11-15 12:06:43 - PHP Warning: htmlspecialchars() [function.htmlspecialchars]: Invalid multibyte sequence in argument in /home/u/****/****/public_html/system/library/request.php on line 31

Насколько это критично, о чем говорят эти предупреждения и как их пофиксить?
Надіслати
Поділитися на інших сайтах


Глобальных изменений никаких не вносил. Из дополнительных модулей установлен только импорт/експорт последняя версия с импортного сайта.phpinfo сейчас отправлю в ссылку в личкуКогда возникает ошибка пока не смог отследить сейчас почистил журнал ошибок ппробую отловить операцию при которой возникает ошибка

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

PHP Warning: htmlspecialchars() [function.htmlspecialchars]: Invalid multibyte sequence in argument in /home/u/****/****/public_html/system/library/request.php on line 31

Не мог поймать из-за чего появляется но в журнале периодически возникали такие записи причем пачками, а сейчас ковыряюсь в магазине и она всплыла не только в журнале а висит вверху сайта причем что на фронте что в админке в ообщем куда бы не зашел. Что это может быть вообще. Может ли вызывать такую ошибку обращение яндекс маркета в yml файйлу? или другие обращения поисковиков к xml карте сайта. Других даже и мыслей нет ни каких по этому поводу на сайте вообще ничего глобально не менял и особо не ковырял. И еще в админке исчезло окно со статистикой.

Странно ошибка видна только в Firefox, зашел на сайт через оперу варнинга нету вверху страницы вообще чудеса.

И еще прикол у сайта есть зеркало (http://nanoproduction.net так вот захожу на основной сайт через мозилу ошибка есть захожу на зеркало ошибки нету, но все ссылке на странице закешированы и ведут на основной сайт перехожу по любой ссылки попадаю на основной сайт там ворнинг. Может быть дело в зеркале и в механизме кеширования?

Надіслати
Поділитися на інших сайтах


ошибка сейчас не показывается потому-что я отключил в админке показ ошибок, но ошибка сейчас возникает при любом обращении к сайту или админки и записывается в журнал (хотя раньше ошибка возникала только иногда непонятно из-за чего). По поводу наложения это у тебя почему-то не подгрузился флеш банер сверху поэтому и произошло наложения я тестил в разных браузерах с внешним видом вроде везде нормально.Сейчас ошибка при любом обращении возникает почему-то только в фаерфоксе в опере не появляется новая ошибка при обращении к сайту. Странно :)

Надіслати
Поділитися на інших сайтах


Какая-то проблема с кукисами или сессиями почистил в фаерфоксе все кукисы для сессии, для пути и для домена через веб девелопер для фаерфокса ошибка перестала возникать временно.

Надіслати
Поділитися на інших сайтах


По поводу наложения это у тебя почему-то не подгрузился флеш банер сверху поэтому и произошло наложения я тестил в разных браузерах с внешним видом вроде везде нормально.

У меня стоит adblock ))) он режет рекламу, так что твой сайт будет не у всех одинаково видиться, так как могут стоят и "другие резчики". Учти на будущее это :-)
Надіслати
Поділитися на інших сайтах


Да с банером понятно ничего страшного добавлю минимальную высоту для блока в которм лежит флеш чтобы не схлопывалось если флеш не подгрузился. Меня больше интересует вопрос из-за чего возникает этот глюк с ворнингом и насколько он критичный и как его избежать. Пока понял лишь одно дело в сессиях или куках

Надіслати
Поділитися на інших сайтах


PHP Warning: htmlspecialchars() [function.htmlspecialchars]: Invalid multibyte sequence in argument in /home/u/****/****/public_html/system/library/request.php on line 31

ну ведь все написано, товарищи, О_о

в оном файле на 31-ой строке

$data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
в функции
public function clean($data) {}
, которая применяется к

$_GET = $this->clean($_GET);		$_POST = $this->clean($_POST);		$_COOKIE = $this->clean($_COOKIE);		$_FILES = $this->clean($_FILES);		$_SERVER = $this->clean($_SERVER);
так что смотри, на какой странице выползает и какие данные попадают в эти массивы.

собсно,

Invalid multibyte
говорит о том, что данные получены не в UTF-8, как ожидала функция, а хз в какой (возможно в cp1251).

как вариант - убрать явное указание UTF-8 в вызове функции htmlspecialchars или дополнительно использовать функцию iconv().

в любом случае google в помощь :) http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=php+Invalid+multibyte+sequence+in+argument

Надіслати
Поділитися на інших сайтах

  • 3 months later...
  • 5 months later...

Ребята,у меня всё то же самое-та же проблема((Как решили?

Подозреваю,что началось когда поисковики на сайт "лазили" яндекс директы и прочие.

мда.. это точно, у меня тоже самое, только что слетела кодировка

пытаюсь побороть..

Так,

1. При удалении cookie кодировка становится нормальной..

Смотрим дальше..

2. Ошибка возникает при переходе с яндекса на сайт, в браузере Google Chrome..

3. Как яндекс быстро реагирует-то..

Ссылка может оказаться не той, за которую себя выдает.

Она могла быть изменена с целью спама и фишинга или была создана давно.

Если вы действительно хотите перейти по этой ссылке, нажмите на нее здесь:
Змінено користувачем aachernishev
Надіслати
Поділитися на інших сайтах


ну ведь все написано, товарищи, О_о

в оном файле на 31-ой строке

$data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');

собсно,

Invalid multibyte
говорит о том, что данные получены не в UTF-8, как ожидала функция, а хз в какой (возможно в cp1251).

как вариант - убрать явное указание UTF-8 в вызове функции htmlspecialchars или дополнительно использовать функцию iconv().

Уважаемый Afwollis, у меня похожая ошибка, после захода с Яндекса, используя Google Chrome.

Появляется на всех страницах.

Кодировка слетает, становится вида :

Дротики РЎС

<b>Warning</b>: htmlspecialchars() [<a href='function.htmlspecialchars'>function.htmlspecialchars</a>]: Invalid multibyte sequence in argument in <b>/system/library/request.php</b> on line <b>31</b><b>Warning</b>: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /index.php:96) in <b>/system/library/session.php</b> on line <b>21</b>

После того, как я в файле /system/library/request.php

поменял

public function clean($data) {
    	if (is_array($data)) {
	  		foreach ($data as $key => $value) {
				unset($data[$key]);
				
	    		$data[$this->clean($key)] = $this->clean($value);
	  		}
		} else { 
	  		$data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
		}

		return $data;
	}

на

public function clean($data) {
    	if (is_array($data)) {
	  		foreach ($data as $key => $value) {
				unset($data[$key]);
				
	    		$data[$this->clean($key)] = $this->clean($value);
	  		}
		} 

		return $data;
	}

Ошибка исчезла, во всех браузерах отображается всё нормально, в верной кодировке..

А вопрос такой..

Это может как-то аукнуться в дальнейшем?

И если да, то как?

Очень надеюсь на ответ, спасибо.

Надіслати
Поділитися на інших сайтах


Да может.

XSS

Спасибо, действительно,

Подмена кодировки в заголовке страницы

Современные браузеры пытаются определить кодировку страницы на ходу и интерпретируют html в соответствии с этой кодировкой. В случае, если тег title расположен до тега meta и заполняется пользовательскими данными, хакер может вставить злонамеренный html-код в кодировке UTF-7, обойдя таким образом фильтрацию таких символов, как < и ".[4][5]

Для защиты от данной уязвимости следует явно указывать кодировку страницы до каких-либо пользовательских полей.

Хм, да, надо что-то другое придумать)

Надіслати
Поділитися на інших сайтах


Как вам такое решение.

public function clean($data) {
static $php525;

        if (!isset($php525)) {
                $php525 = version_compare(PHP_VERSION, '5.2.5', '>=');
        }

        if (is_array($data)) {
                foreach ($data as $key => $value) {
                        unset($data[$key]);
                                
                        $data[$this->clean($key)] = $this->clean($value);
                }
        } else { 
                //Org: $data = htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
                //Fix:
                if ($php525) {
                        $data = (preg_match('/^./us', (string) $data) == 1) ? htmlspecialchars((string) $data, ENT_QUOTES, 'UTF-8') : ”;
                } else {
                        $data = (preg_match('/^./us', $data) == 1) ? htmlspecialchars($data, ENT_QUOTES, 'UTF-8') : ”;
                }
        }

        return $data;
}
Надіслати
Поділитися на інших сайтах


А может лучше попытаться определить кодировку и конвертнуть в UTF-8?

Как-то вот так...

$data = mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data));

А вообще у кого устойчиво наблюдается эта ошибка и готовы дать доступ к хостингу - отпишитесь в личку... постараюсь точно диагностировать проблему и найти нормальное решение.

  • +1 2
Надіслати
Поділитися на інших сайтах

Как вам такое решение.

К сожалению, слетает кодировка при таком решении..(

А может лучше попытаться определить кодировку и конвертнуть в UTF-8?

Как-то вот так...

$data = mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data));

А вот так работает, спасибо Вам огромное =)

Надіслати
Поділитися на інших сайтах


  • 9 months later...
  • 3 months later...

А может лучше попытаться определить кодировку и конвертнуть в UTF-8?

Как-то вот так...

$data = mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data));

А вообще у кого устойчиво наблюдается эта ошибка и готовы дать доступ к хостингу - отпишитесь в личку... постараюсь точно диагностировать проблему и найти нормальное решение.

После того, как поправил файл таким образом, стала два-три раза за сутки вылезать следующая ошибка:

PHP Warning:  mb_convert_encoding() [<a href='function.mb-convert-encoding'>function.mb-convert-encoding</a>]: Illegal character encoding specified in /system/library/request.php on line 31
Может кто-нибудь что-то подсказать?
Надіслати
Поділитися на інших сайтах


  • 2 years later...

Удалось ли найти окончательное решение в итоге?

 

Уже попробовал в файле .htaccess  написать:

<IfModule mod_geoip.c>

GeoIPEnableUTF8 On
</IfModule>

 

и раскомментировал 

php_flag magic_quotes_gpc Off

Не помогает.

 

Проблема возникает в IE11 и Chrome при возвращении на "страницу успеха" после успешной оплаты Яндекс.Деньги. При этом слетает кодировка.

Надіслати
Поділитися на інших сайтах


  • 1 year later...

Друзья,помогите решить проблему, ошибка возникает в логах опенкарт 2.0 периодически следующая, что это такое и как решить? 
017-05-28 8:35:32 - PHP Warning:  htmlspecialchars() [<a href='function.htmlspecialchars'>function.htmlspecialchars</a>]: Invalid multibyte sequence in argument in /home/c/cg37952/test1/public_html/system/library/request.php on line 26
2017-05-28 8:35:32 - PHP Warning:  htmlspecialchars() [<a href='function.htmlspecialchars'>function.htmlspecialchars</a>]: Invalid multibyte sequence in argument in /home/c/cg37952/test1/public_html/system/library/request.php on line 26
2017-05-28 8:35:32 - PHP Warning:  htmlspecialchars() [<a href='function.htmlspecialchars'>function.htmlspecialchars</a>]: Invalid multibyte sequence in argument in /home/c/cg37952/test1/public_html/system/library/request.php on line 26
 

Надіслати
Поділитися на інших сайтах


Добрый день, кто поможет как решить проблему! Ошибка в логах, не могу понять почему происходит.. 

017-05-28 8:35:32 - PHP Warning:  htmlspecialchars() [<a href='function.htmlspecialchars'>function.htmlspecialchars</a>]: Invalid multibyte sequence in argument in /home/c/cg37952/test1/public_html/system/library/request.php on line 26
2017-05-28 8:35:32 - PHP Warning:  htmlspecialchars() [<a href='function.htmlspecialchars'>function.htmlspecialchars</a>]: Invalid multibyte sequence in argument in /home/c/cg37952/test1/public_html/system/library/request.php on line 26
2017-05-28 8:35:32 - PHP Warning:  htmlspecialchars() [<a href='function.htmlspecialchars'>function.htmlspecialchars</a>]: Invalid multibyte sequence in argument in /home/c/cg37952/test1/public_html/system/library/request.php on line 26
2017-05-28 9:04:06 - PHP Warning:  htmlspecialchars() [<a href='function.htmlspecialchars'>function.htmlspecialchars</a>]: Invalid multibyte sequence in argument in /home/c/cg37952/test1/public_html/system/library/request.php on line 26

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.