Top.Mail.Ru
Ответы
Аватар пользователя
7лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Правильно ли я сделал - $fname = mysql_real_escape_string($_POST['kor_post']);

Дополнен

хватит ли этого чтобы обезопасить то что поступит в таблицу

По дате
По рейтингу
Аватар пользователя
Новичок
7лет

Для PHP 4 - да, правильно. Для PHP 5 - устарело и категорически не рекомендуется. А в PHP 7 функции mysql_real_escape_string вообще не существует.

Зато есть библиотеки http://php.net/manual/ru/class.pdo.php и http://php.net/manual/ru/book.mysqli.php

В которых есть такая замечательная вещь, как http://php.net/manual/ru/pdo.prepared-statements.php и http://php.net/manual/ru/mysqli.quickstart.prepared-statements.php

Аватар пользователя
Профи
7лет

Раз никто по теме нормально не смог ответить, то отвечу тогда я :)

Не знаю можно ли кидать ссылку на видео. Надеюсь никого не обижу:
https://school-php.com/courses/php-i-mysql-programmirovanie-s-nulya/урок-20/php-mysql-работа
Вот тут я показываю как писать mysqli_real_escape_string для безопасности. То есть именно библиотеку mysqli_* , а не mysql_ .

Хочу заметить, что real_escape_string экранирует кавычки, то есть запросы без кавычек как бы не экранируются.
SELECT *
FROM `users`
WHERE `id` = ".$_POST['id']."

В данном запросе ты можешь увидеть то, что передаётся цифра 5 и получается
WHERE `id` = 5

Но если вписать 0 or 1=1, то получим запрос
SELECT *
FROM `users`
WHERE `id` = 0 or 1=1

Что приведет к уязвимости! Применения очень обширные, доступ к непредвиденным данным

Приведение к типу решает эту проблему, для чисел пишешь (int), (float), для строк, которые записываются в запросе в кавычках - real_escape_string .

Аватар пользователя
Гений
7лет

Хватит, но лучше использовать связанные переменные (параметры запроса), тогда никакой escape не нужен.