Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: народ как понимать где ставить кавыки где нет ну пример смотрите
 
 автор: KVN   (23.05.2007 в 19:40)   письмо автору
 
 

$query = "SELECT password FROM users WHERE name='".$_POST['name']."'";
'".$_POST['name']."'"; почему так но никогда бы не догадался
вообше есть какая нибудь логика где и как ставить и что объясните кто имеет точное представление пожалуйста

   
 
 автор: Trianon   (23.05.2007 в 19:57)   письмо автору
 
   для: KVN   (23.05.2007 в 19:40)
 

Если забыть на минуточку про безопасность, и говорить только о подстановке переменных в строки, то я всегда советую избавляться от массивов:

$user = $_POST['name'];
$query = "SELECT password FROM users WHERE name='$user'"; 

Такой код читается легче всего. И работает однозначно.


Можно подставлять и элементы массивов, но только индексируемые константами,
при этом константы эти пишутся без апострофов. Синтаксис идиотичен до безумия, и работает только с некоторыми строками:

$query = "SELECT password FROM users WHERE name='$_POST[name]'"; 


Можно также явно указывать область подстановки фигурными скобками:

$query = "SELECT password FROM users WHERE name='${_POST['name']}'"; 

Код читается не легче, вобщем-то.... Но более однозначен.

Можно вообще подстановку не применять, а цеплять строку из нескольких фрагментов через точки. Как написали Вы в своем посте. Такой код абсолютно однозначен, но из-за обилия операций сцепления строк выглядит тяжеловато.


Теперь почему Ваш код небезопасен. Потому, что посетитель может серьезно влиять на текст SQL-запроса, просто дописывая нужное в поле имени. Грубо говоря.
Атака называется SQL-injection .

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования