Баг с кодировкой

Статус
Закрыто для дальнейших ответов.

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Люблю потестировать свой сайт на баги, ошибки и тд... И частенько нахожу их и исправляю. Но тут никак не получается исправить:(
Вот даю пример:
Два сайта: Мой сайт и сайт хакера, мой сайт на кодировке windows 1251 а у хакера на utf-8, так вот он создает у себя точно такую же страницу как у меня, с формами полями тд. И со своей отправляет данные мне не сервер, мой сайт всё это принимает, обрабатывает и вносит в бд или в файл. Вроде бы всё нормально звучит, но не тут то было, всё заносится в бд либо иероглифами, либо вообще ничего не заносится... Хотя проверку на число символов этот текст у меня на сервере проходит...
Как быть?
И вторая проблема: Если человек напишет у меня на сайте на каком то другом языке то всё пишется иероглифами, как будто бы у меня база заглючила... как это исправить?
Предлагать перейти на utf-8 кодировку не выход, у меня много регулярок, а утф с регулярками не дружит, а значит работы у меня будет на месяц вперед:(
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 137
Самое простое iconv()
Конвертируй перед заносом в БД этим или другим способом. Варианты имеются.

И со своей отправляет данные мне не сервер
В один прекрасный день сайту будет ппц.
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Самое простое iconv()
Конвертируй перед заносом в БД этим или другим способом. Варианты имеются.

И со своей отправляет данные мне не сервер
В один прекрасный день сайту будет ппц.
Так вот мне и надо сделать, что бы он ниче не мог отправлять мне со своего сайта... как закрыть доступ?
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
проверяй рефер при парсе формы. если не свое. то нафиг. но рефер можно спокойно подделать. капча та хоть стоит?
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
проверяй рефер при парсе формы. если не свое. то нафиг. но рефер можно спокойно подделать. капча та хоть стоит?
Каптчу я сделал только при регистрации... Но если так подумать, то злоумышленник ничего же не сможет сделать через форму? Все лишние знаки я вырезаю, обрезаю до нужной длины, через php.ini запретил инклуд и загрузку любых файлов с других сайтов... Тем более в форму нельзя ничего будет вбить, если пользователь не авторизован у меня на сайте... Разве ещё что то можно сделать через форму?
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
А у меня сайт в UTF-8, хедер нужный отправляется, файлы все в utf-8 без BOM, но буква "ш" отображается как назрев�?ие

что можете посоветовать?
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
А у меня сайт в UTF-8, хедер нужный отправляется, файлы все в utf-8 без BOM, но буква "ш" отображается как назрев�?ие

что можете посоветовать?
У меня было подобное, только в кодировке Ср-1251, может не установили кодировку при соединении? У меня так и было..
Код:
mysql_query("SET NAMES 'UTF-8';");
mysql_query("SET CHARACTER SET 'UTF-8';");
mysql_query("SET SESSION collation_connection = 'utf8_unicode_ci';");
Можно проверить, например вбить текст, передать на другую страницу и тут сделать так:
1. Выводим текст до обработки
2. Вносим в бд/или файл
3. Принудительно сменяем кодировку тексту на utf-8 (функцию для этого не помню)
4. Выводим текст после обработки
5. Вносим в бд/файл этот текст после обработки
Если не правильно будет отображаться до 3 пункта, значит ошибка где то в соединении с бд
А если и после первого и после третьего пункта, значит ошибка в кодировке, либо в файле, либо где то ещё, где установлена кодировка, например htaccess. В том направлении и надо копать..
И кстати не только у вас такая проблема..
http://php.su/forum/topic.php?forum=1&topic=2498
http://vbsupport.org/forum/archive/index.php/t-7214.html
http://code-igniter.ru/forum/viewtopic.php?f=3&t=898&start=0
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Предлагать перейти на utf-8 кодировку не выход, у меня много регулярок, а утф с регулярками не дружит, а значит работы у меня будет на месяц вперед:(
с этого места поподробнее.ПРИМЕРЫ В СТУДИЮ!!! Если ereg то вас убивать надо, т.к. в последних версиях пыха от него отказываются. И решение использовать Multibyte String
http://www.php.net/manual/en/ref.mbstring.php
кодировка
http://php.net/manual/en/function.mb-detect-encoding.php
http://habrahabr.ru/blogs/php/107945/
А чем крокозябры парят? Недостаточная проверка на стороне сервера??
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Предлагать перейти на utf-8 кодировку не выход, у меня много регулярок, а утф с регулярками не дружит, а значит работы у меня будет на месяц вперед:(
с этого места поподробнее.ПРИМЕРЫ В СТУДИЮ!!! Если ereg то вас убивать надо, т.к. в последних версиях пыха от него отказываются. И решение использовать Multibyte String
http://www.php.net/manual/en/ref.mbstring.php
кодировка
http://php.net/manual/en/function.mb-detect-encoding.php

А чем крокозябры парят? Недостаточная проверка на стороне сервера??
Убивать не надо :blush: Вот я не в курсе, что где и когда и отчего отказываются.. Можно ссылку где об этом можно читать? Я читал разные учебники по php, они хрен знает с какого года и вот по ним делаю...
Какое отличие между mb_функция и прежними?
например mb_ereg_match и preg_match? Они обе ищут что то по шаблону...
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Предлагать перейти на utf-8 кодировку не выход, у меня много регулярок, а утф с регулярками не дружит, а значит работы у меня будет на месяц вперед:(
с этого места поподробнее.ПРИМЕРЫ В СТУДИЮ!!! Если ereg то вас убивать надо, т.к. в последних версиях пыха от него отказываются. И решение использовать Multibyte String
http://www.php.net/manual/en/ref.mbstring.php
кодировка
http://php.net/manual/en/function.mb-detect-encoding.php

А чем крокозябры парят? Недостаточная проверка на стороне сервера??
Убивать не надо :blush: Вот я не в курсе, что где и когда и отчего отказываются.. Можно ссылку где об этом можно читать? Я читал разные учебники по php, они хрен знает с какого года и вот по ним делаю...
Какое отличие между mb_функция и прежними?
например mb_ereg_match и preg_match? Они обе ищут что то по шаблону...
preg работает с utf8 без проблем. Preg официально поддерживаемый стандарт. Ereg устаревший. Там разный формат регулярок.
strlen например для utf-8 выдаст фигню, а mb нормальный результат. Рекомендуется использовать функции с mb

вот кстати интересная функция http://www.php.net/manual/en/function.mb-http-input.php
 
Статус
Закрыто для дальнейших ответов.
Верх Низ