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

Форум PHP

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

 

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

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

тема: Развейте сомнения

Сообщения:  [1-10]   [11-13] 

 
 автор: Николай2357   (07.02.2010 в 14:15)   письмо автору
 
   для: Trianon   (07.02.2010 в 13:49)
 

Не мерял, если чесно... Я инициализацию делаю совершенно иначе, еще медленнее, но намного симпотичнее. А вот на счет удобнее прочесть и понять - у каждого свое видение удобства. Меня пугают собаки. С детства.)))
Потому что если предполагается возможность ошибки - знач что то не так, как задумано.
А если
>я ошибусь в написании лексем _POST и user.
или
если я напишу в первой записи 1-е упоминание _POST/user с ошибкой , а 2-е - правильно .
то какой смысл продолжать работу скрипта?

  Ответить  
 
 автор: Trianon   (07.02.2010 в 13:49)   письмо автору
 
   для: Николай2357   (07.02.2010 в 13:19)
 

Никоим образом не желая навязывать свою точку зрения, скажу лишь, что по-моему вред от собаки сильно зависит от того насколько велик контекст, ею блокируемый.
И сравнивая
 $user = isset($_POST['user'])?$_POST['user']:null;
 $user = @$_POST['user'];

я выберу второе. Потому что
1) вторую запись легче прочесть и понять. А контекст блокирования диагностики - минимален.
2) первая запись не поможет, если я ошибусь в написании лексем _POST и user.
3) первая запись помешает, если я напишу в первой записи 1-е упоминание _POST/user с ошибкой , а 2-е - правильно .
4) если сравнить скорость, можно схватиться за голову. Хотя это и меньшая боль.

  Ответить  
 
 автор: Николай2357   (07.02.2010 в 13:19)   письмо автору
 
   для: t3ma   (07.02.2010 в 13:05)
 

Символ собаки - вещь вредная. Лучше инициализировать переменные явно
<?php  
  $user 
= isset($_POST['user'])?$_POST['user']:null;

но без собаки, как в первом варианте, еще хуже. Хотя если собака, то должна быть и потом, в запросе. А что касаемо mysql_num_rows(), то единственное значение лучше вытаскивать mysql_result(), для того она и.

  Ответить  
 
 автор: t3ma   (07.02.2010 в 13:05)   письмо автору
 
   для: Николай2357   (07.02.2010 в 12:53)
 

Зачем символ собаки ? его использовать не нужно
что за условие if (mysql_result($res,0) < 1) ? для этого есть функция mysql_num_rows()

  Ответить  
 
 автор: Николай2357   (07.02.2010 в 12:53)   письмо автору
 
   для: Desh   (06.02.2010 в 23:06)
 

<?php  
  $user 
= @$_POST['user'];  
  
$pass = @$_POST['pass'];  
  
$res mysql_query("SELECT COUNT(*) AS login 
                     FROM users 
                     WHERE user = '"
mysql_real_escape_string($user) ."'
                     AND pass = '"
mysql_real_escape_string($pass) ."'"
                     
);
                        
  if (
mysql_result($res,0) < 1)  
  {  
        die(
"die");  
  } 

так еще меньше бессмысленного кода. Только пароли в явном виде хранить - ооочень зря.

  Ответить  
 
 автор: Desh   (06.02.2010 в 23:06)   письмо автору
 
   для: Тень&   (06.02.2010 в 23:03)
 

Ясно.
А функция занимается тем, что экранирует спец. символы)

  Ответить  
 
 автор: Тень&   (06.02.2010 в 23:03)
 
   для: Тень&   (06.02.2010 в 23:02)
 

> А чем лучше?

Вернее даже так: меньше бессмыленного кода.

  Ответить  
 
 автор: Тень&   (06.02.2010 в 23:02)
 
   для: Desh   (06.02.2010 в 22:56)
 

> Конечно не проверяет, это я не так выразился
Попробуйте сформулировать правильно. Что делает эта функция?

> А чем лучше?
Тем, что меньше кода.

Хотя, я тут вчитался в комментарий автора этого кода:
> данная проверка даст TRUE, если была sql инъекция
Полнейшая, как говорится, чушь. Но статью, очевидно, не поправят.

  Ответить  
 
 автор: Desh   (06.02.2010 в 22:56)   письмо автору
 
   для: Тень&   (06.02.2010 в 22:26)
 

>mysql_real_escape_string() не проверяет данные.
Конечно не проверяет, это я не так выразился.

А чем лучше?

  Ответить  
 
 автор: Тень&   (06.02.2010 в 22:26)
 
   для: Desh   (06.02.2010 в 20:17)
 

mysql_real_escape_string() не проверяет данные.

Лучше, естественно, использовать mysql_num_rows(), необходимо лишь добавить атрибут BINARY на столбец pass, либо использовать оператор с таким же названием. Автор статьи, видимо, не подозревал о таких вещах.

  Ответить  

Сообщения:  [1-10]   [11-13] 

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

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