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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Безопасность форм

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]  [41-42] 

 
 автор: confirm   (07.04.2014 в 14:53)   письмо автору
 
   для: volodumir   (07.04.2014 в 14:47)
 

Потому, что проще запись, а метод сам каждый элемент массива сопоставит с метками. В описании PDO обо всем этом ведь сказано, не так много как хотелось бы, но вполне достаточно для уяснения.

  Ответить  
 
 автор: volodumir   (07.04.2014 в 14:47)   письмо автору
 
   для: psychomc   (06.04.2014 в 00:49)
 

Спасибо, а почему лучше?

  Ответить  
 
 автор: psychomc   (06.04.2014 в 00:49)   письмо автору
 
   для: volodumir   (05.04.2014 в 21:21)
 

код полностью безопасен. вместо

$stmt->bindParam(':firstname', $firstname); 
$stmt->bindParam(':lastname', $lastname); 
$stmt->bindParam(':email', $email); 

лучше отдайте массив методу execute

  Ответить  
 
 автор: volodumir   (05.04.2014 в 21:21)   письмо автору
 
   для: confirm   (24.03.2014 в 23:26)
 

Скажите, пожалуйста, на сколько данный код безопасен?
//Не именованные метки
try {
$stmt = $db->prepare("INSERT INTO test (label,color) VALUES (?,?)");
$stmt -> execute(array('perfect','green'));
}
catch(PDOException $e){
echo 'Error : '.$e->getMessage();
exit();
}
//stmt - это "дескриптор состояния"
 
//Именованные метки
$stmt = $db->prepare("INSERT INTO test (label,color) VALUES (:label,:color)");
$stmt -> execute(array('label'=>'perfect', 'color'=>'green'));
 
//Еще вариант
$stmt = $db->prepare("INSERT INTO users (firstname, lastname, email) VALUES (:firstname, :lastname, :email)");
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);
$firstname = "John";
$lastname = "Smith";
$email = "john@test.com";
$stmt->execute();

  Ответить  
 
 автор: confirm   (24.03.2014 в 23:26)   письмо автору
 
   для: psychomc   (24.03.2014 в 19:16)
 

Ну в общем да, будет смотреть, значит и в prepare() воткнется, где и разъясняется интересуемое )

  Ответить  
 
 автор: psychomc   (24.03.2014 в 19:16)   письмо автору
 
   для: Саня   (24.03.2014 в 19:07)
 

так никто и не говорит, что не использовать. речь то шла конкрентно про параметры

  Ответить  
 
 автор: Саня   (24.03.2014 в 19:07)   письмо автору
 
   для: psychomc   (24.03.2014 в 16:32)
 

Если не использовать эмулированные подготовленные запросы, то получится деградация производительности.

  Ответить  
 
 автор: confirm   (24.03.2014 в 16:58)   письмо автору
 
   для: psychomc   (24.03.2014 в 16:32)
 

Надо бы сказать, что сперва подготавливается запрос, а уже потом....

  Ответить  
 
 автор: psychomc   (24.03.2014 в 16:32)   письмо автору
 
   для: volodumir   (24.03.2014 в 15:33)
 

ВСЕ параметры, которые вы собираетесь использовать в запросах PDO, должны прогоняться через метод execute. забудьте о том строка это или число, просто возьмите за правило. и не имеет никакого значения откуда эти данные

  Ответить  
 
 автор: volodumir   (24.03.2014 в 15:33)   письмо автору
 
   для: psychomc   (24.03.2014 в 15:26)
 

Честно говоря сам не знаю, использовать is_numeric() безопасно непосредственно для $_POST? Перед самим добавлением цифр через PDO.

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]  [41-42] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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