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

Форум PHP

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

 

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

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

тема: Обьясните код.
 
 автор: Евгений Петров   (23.06.2005 в 15:50)   письмо автору
 
 

Обьясните пожалуйста код из статьи "безопасное програмирование". Что такое list, и почему не стоит проверять на возвращение строки? Заранее спасибо.
1. Не используйте проверку на возращение строки (mysql_num_rows()), а применяйте следующий подход:

<?php 
  $user 
$_POST['user']; 
  
$pass $_POST['pass']; 
  
$sql "SELECT user, pass FROM users WHERE user = '$user'"
  list(
$m_user$m_pass) = mysql_fetch_rowmysql_query($sql) ); 
  if ( 
$pass != $m_pass or  // даст TRUE, если пароли не равны 
     
$user != $m_user // данная проверка даст TRUE, если была sql инъекция 
  

  { 
        die(
"die"); 
  } 
?>  

   
 
 автор: cheops   (23.06.2005 в 19:43)   письмо автору
 
   для: Евгений Петров   (23.06.2005 в 15:50)
 

list() - это конструкция, которая позволяет разбить массив на переменные
<?php
  
list($first$second$third) = array("first""second""third");
  echo 
$first."<br>";  // first
  
echo $second."<br>"// second
  
echo $third."<br>";  // third
?>

Функцию mysql_num_rows() лучше не использовать, так как при помощи ряда ухищрений, передав через переменную $user элемент SQL-запроса, можно его видоизменить таким образом, что он всегда будет возвращать хотя бы одну строку. Поэтому логин и пароль лучше проверять явно.

   
Rambler's Top100
вверх

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