2011-01-23 2 views
1

Я использую PHP и MySQL для управления базовым форумом. Когда пользователи используют апостроф (') или вставляют ссылки в свой пост, функция mysql_real_escape_string добавляет \ к тексту. При отображении сообщения ссылки не работают, и у всех апострофов есть \ перед ним.Лучший способ очистки данных перед записью в базу данных

Является ли проблема в том, что я ничего не делаю перед выводом текста или проблема в том, что я не очищаю данные должным образом перед тем, как писать в MySQL?

ответ

2

Включены ли magicquotes? Вы можете быстро проверить, создав PHP страницу так:

<?php var_dump(get_magic_quotes_gpc()) ?> 

Если страница говорит что-то вроде int(1), то преступник не mysql_real_escape_string, но сам PHP. Это была функция безопасности, но не очень безопасная и в основном просто раздражающая. Прежде чем вы дезинформируете каждую переменную, сначала нужно отменить резание с помощью stripslashes.

0

Вы также можете отключить волшебные кавычки с помощью этого:

if (version_compare(PHP_VERSION, '5.3.0', '<')) { 
    set_magic_quotes_runtime(0); 
} 

Получится магии котировки от когда ваш сервер работает под управлением любой версии PHP ниже 5.3.0.

Смежные вопросы