Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.04.2011, 19:49
Аватар для zercs
Интересующийся
Отправить личное сообщение для zercs Посмотреть профиль Найти все сообщения от zercs
 
Регистрация: 01.02.2011
Сообщений: 19

AJAX и спецсимволы
Привет всем! Нужна помощь.

Вот в ходе работы над очередным проектом осознал, что всё, хватит низкоуровневых ajax-запросов и прочего... В следущем обязательно перейду на jQuery ajax, поюзаю объекты в php и переведу базу в UTF...

Но пока всё так, как есть, поэтому сильно не пинать.
Суть проблемы: Есть контейнер, наполняется через ajax запрос.

Запрос стандартный:
function get_messages() {
  	if(mess_req) {
        var preloader = document.getElementById("messenger_result");  //показываем
	preloader.innerHTML = "<img src='images/preloader.gif' style='margin: 150px 0 0 200px;' alt=''>";
	mess_req.onreadystatechange = get_messages_response;
	mess_req.open("GET", "scripts/messenger.php", true);
	mess_req.send(null);
	return true;
    } else {return false;}
}


Всё это идёт на сервер и обрабатывается. Там же присутствует функция для замены всех символов на их кодировки для безопасной работы:
function universal($string) {
        $string = trim($string);
        $string = stripslashes($string);
        $string = htmlspecialchars($string);

        $string = str_replace(">","&#062;",$string);
        $string = str_replace("<","&#060;",$string);
        $string = str_replace("/","&#047;",$string);
        $string = nl2br($string);    
        $string = str_replace("(","&#040;",$string);
        $string = str_replace(")","&#041;",$string);
        $string = str_replace('"',"&#034;",$string);
        $string = str_replace("$","&#036;",$string);
        $string = str_replace("%","&#037;",$string);
        $string = str_replace("'","&#039;",$string);
        $string = str_replace("*","&#042;",$string);
        $string = str_replace(",","&#044;",$string);
        $string = str_replace("-","&#045;",$string);    
        $string = str_replace("=","&#061;",$string);    
        $string = str_replace("[","&#091;",$string);
        $string = str_replace("]","&#093;",$string);
        $string = str_replace("{","&#123;",$string);
        $string = str_replace("}","&#125;",$string);
        $string = str_replace("`","&#096;",$string);
        $string = str_replace("+","&#043;",$string);
        $string = str_replace("_","&#095;",$string);
        $string = str_replace("_","&#095;",$string);    
        $string = str_replace("№","&#8470;",$string);
        $string = str_replace("^","&#094;",$string);    
        $string = str_replace(":","&#058;",$string); 
        
        return $string;
        }


Ну вот. Когда responseText приходит обратно - все хорошо, за исключением этих самых символов. Они в таком виде (
&#058;
) и выводятся.

Недолго думая, сваял обратную функцию на js, что-то вроде:
function symbols(str) {
str = str.replace(/&#058;/g,":");
return str;
}


Не работает. Зашел в тупик. Без преобразования всех этих символов мне их в базу совать, естессна нельзя.

P.S. Хотя другие варианты по защите от sql-injection и прочего - приму с удовольствием. Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 19.04.2011, 19:50
Аватар для zercs
Интересующийся
Отправить личное сообщение для zercs Посмотреть профиль Найти все сообщения от zercs
 
Регистрация: 01.02.2011
Сообщений: 19

Прошу прощения за две темы.
Ответить с цитированием
  #3 (permalink)  
Старый 19.04.2011, 20:08
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от zercs
Там же присутствует функция для замены всех символов на их кодировки для безопасной работы:
вы что-нибудь слышали про такие функции как htmlentities(), mysql_real_escape_string() и на в конце концов encodeURIComponent()?
Сообщение от zercs
Хотя другие варианты по защите от sql-injection и прочего - приму с удовольствием.
для начала прочтите это: http://webew.ru/articles/2078.webew и не изобретайте велосипед

Последний раз редактировалось monolithed, 19.04.2011 в 20:12.
Ответить с цитированием
  #4 (permalink)  
Старый 19.04.2011, 20:12
Аватар для zercs
Интересующийся
Отправить личное сообщение для zercs Посмотреть профиль Найти все сообщения от zercs
 
Регистрация: 01.02.2011
Сообщений: 19

Да, но где-то я слышал, что одного mysql_real_escape_string недостаточно. Остальные функции используются итак. Вместо htmlentities - htmlspecialchars();

Проблема не в символах типа
&quote.
, а в том, как перекодировать обратно другие -;: и т.д.

Мб я не понял что-то из ответа За ссылку спасибо, почитал. Лан, с велосипедом повременю)

Последний раз редактировалось zercs, 19.04.2011 в 20:15.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX и спецсимволы zercs AJAX и COMET 0 19.04.2011 19:48
кеширование HTML переданого через ajax BorisBritva jQuery 6 02.04.2011 01:23
Ajax разбор метода mycoding jQuery 14 21.05.2010 10:57
ajax спецсимволы j0ker13 jQuery 1 03.05.2010 22:16
jquery+php а также ajax и спецсимволы BIG PROBLEM!!! vova_b jQuery 2 21.03.2010 13:43