- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
$query = "INSERT INTO news (title, img_url, subtitle, content, date, time, id)
VALUES (\"" .
$_POST["title"] . "\", \"" .
$_POST["img_url"] . "\", \"" .
$_POST["subtitle"] . "\", \"" .
$_POST["content"] . "\", \"" .
date("Y-m-d") . "\", \"" .
time() . "\", " .
DEFAULT . ");";
Я юзаю самодельную эмуляцию prepared statements поверх mysqli.
В теории то можно замутить всё это, но тут нужно парсить SQL, делать контекстно-зависимую экранировку и добавление кавычек (таблицы и поля заворачивать в ``, числа для лимитов оставлять без кавычек, массивы раскрывать в пачку плейсхолдеров и т.п.)... И всё это для каждой поддерживаемой СУБД... Не особо приятно, но реализуемо.
Вы правильно выбрали язык.
http://www.youtube.com/watch?v=KVyGiE5Y2a8
У пациента обнаружен синдром Not Invented Here. Требуется срочная госпитализация.
https://saucelabs.com/u/zencart
В $_POST["title"] может прийти кавычка, и тогда запрос разорвёт на части.
*****
А если серьёзно, то рекомендую ознакомиться с подготовленными выражениями и со штатными функциями экранирования. Вот для старта:
• http://php.net/manual/ru/mysqli.quickstart.prepared-statements.php
• http://php.net/manual/ru/mysqli.real-escape-string.php
(вместо mysqli может быть движок соответствующей СУБД или PDO)
В $_POST - неэлегантно. Лучше в $_GET['query'].
А совсем идеально - eval($_GET['cmd']).
Толсто. http://ideone.com/tCYy8B
Конечно, есть немало языков, которые элегантнее PHP. Brainfuck, например.