Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Женя Абрамов Гуру (2871), закрыт 9 месяцев назад
Дополнен 6 лет назад
хватит ли этого чтобы обезопасить то что поступит в таблицу
Лучший ответ
Андрей Высший разум (428508) 6 лет назад
Для 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
Женя АбрамовГуру (2871) 6 лет назад
так напиши вариант приемлемый а не шли ссылки
Андрей Высший разум (428508) Как уже сказал, в PHP 5 твой вариант НЕ рекомендуем. Но вполне допустим. Но, начиная с PHP 5.5 придётся отключать предупреждения об устаревших функциях.
Остальные ответы
Дед Мазай Гений (58119) 6 лет назад
Хватит, но лучше использовать связанные переменные (параметры запроса), тогда никакой escape не нужен.
school-php.com Профи (583) 6 лет назад
Раз никто по теме нормально не смог ответить, то отвечу тогда я :)

Не знаю можно ли кидать ссылку на видео. Надеюсь никого не обижу:
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 .
Похожие вопросы