Лучший способ очистить данные перед записью в базу данных - PullRequest
1 голос
/ 24 января 2011

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

Проблема в том, что я не делаю что-то перед выводом текста, или проблема, которой я не являюсьправильно очистить данные перед записью в MySQL?

Ответы [ 2 ]

2 голосов
/ 24 января 2011

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

<?php var_dump(get_magic_quotes_gpc()) ?>

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

0 голосов
/ 24 января 2011

Вы также можете отключить магические кавычки, используя это:

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

Он отключит магические кавычки, когда на вашем сервере установлена ​​любая версия php ниже 5.3.0.

...