Будет ли mysql_real_escape_string () отменять штрихи ()? - PullRequest
0 голосов
/ 27 мая 2011

У меня есть пользователи, которые вводят некоторую информацию, которая будет храниться в sql. Конечно, я хочу избежать всех кавычек и тому подобного ... но я не хочу, чтобы этот материал также выводился в окончательный HTML.

Я запускаю эту функцию для всех переменных $ _POST. Это действительно?

 function cleanArray($array)  //prevent funky insertions
{
foreach ($array as &$value)
{
    $value = mysql_real_escape_string(stripslashes(nl2br($value)));
}
return $array;  
}

Я беспокоюсь о побеге и полосках, отменяющих друг друга?

1 Ответ

5 голосов
/ 27 мая 2011

Чтобы экранировать строковые данные перед их вставкой в ​​базу данных, используйте mysql_real_escape_string.

Чтобы вывести те же данные позже на HTML-странице, используйте htmlspecialchars(), если вы хотите, чтобы исходный код HTML отображался в виде буквенных символов, или strip_tags(), если вы хотите молча удалить любой HTML.

Больше ничего не нужно, кроме случаев, когда у вас активированы магические кавычки , и в этом случае вам действительно понадобится stripslashes() перед выполнением mysql_real_escape_string(). Однако магические кавычки устарели, и было бы намного лучше отключить их .

...