inpost, ты правильные советы даешь, но подключение PDO новичком это же адовы муки...
Я вот сейчас код этот посмотрел, подумал, что бы написать... и у меня получилась в уме целая мегатонна кода, на который скорее всего забьют и будут дальше писать как раньше, ну, то, что в первом топике.
это чистой воды говнокод.
[b]
mysql_real_escape_string - космический говнокод.
Нужно использовать prepared statements
http://php.net/manual/ru/pdo.prepare.phpЗа эту строчку нужно карать без вазелина, грешат подобным все, даже очень крупные проекты, но всем насрать.
И так, чтобы побыстрому и поменьше, нужно всю работу с СУБД вынести через PDO или MYSQLi я советую PDO, потому что, в MYSQLi я какой-то баг давно нашел, связанный кажется как раз с привязкой значений от чего нефига не работало, поэтому юзаю всегда PDO.
---------
Вспомнил, что за баг, там динамически нельзя создавать привязку :lol: Я ленивая жопа у меня есть функция lazyass(string $sql_query, mixed $params, ...)
Я сразу ввожу sql запрос и параметров сколько нужно, а функция сама собирает запрос... В MYSQLi такое не канало.
Второе, вывод всех недоверенных данных пользователю нужно делать через например такое:
Это не законченный вариант, а выдраный кусок, проверку на массив или нет, у меня в другом месте.
function safety($vars)
{
foreach($vars as $key => $val)
{
if(is_array($val))
$vars[$key] = safety($val);
else
{
if(!(is_int($val) || is_float($val)))
$vars[$key] = htmlspecialchars($val, ENT_QUOTES);
}
}
return $vars;
}
Можно скормить как массив так и обычную переменную. Я ленивая жопа, поэтому скармливаю сразу массив полученный из базы.
Так как я ленивая жопа, у меня все, что идет на вывод автоматом скармливается этой функции, поэтому если я упорюсь, ничего страшного не произойдет, если мне нужен сырой вывод, я скармливаю данные функции которая выводит сырые данные, а подефолту все ходит через это.