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

Форум PHP

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

 

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

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

тема: Оцените скрипт защиты админки.

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

 
 автор: tvv123456   (17.08.2010 в 02:10)   письмо автору
 
   для: Лена   (14.08.2010 в 16:17)
 

Извиняюсь что снова поднимаю тему, но впредь кто прочитает эту тему:
вот такой конец :

     } 
    } 
  } 
?> 

Это не очень хорошо.
По логике: на кой черт вам вся эта уйма else?

........................
<?
if (mysql_num_rows($lst) == 0)     
    
// пользователя с таким именем нет в БД, отклик 401 
        
Header("WWW-Authenticate: Basic realm="Admin Center""); 
        
Header("HTTP/1.0 401 Unauthorized"); 
        exit(); 
    }else 
// на кой черт оно тут ? если в итоге выполниться условие, то скрипт итак остановиться,
//на кой черт тут(и не только тут это else?

  Ответить  
 
 автор: nikita2206   (15.08.2010 в 20:54)   письмо автору
 
   для: lElectroHardl   (14.08.2010 в 14:20)
 

Ошибкой уровня Notice

  Ответить  
 
 автор: lElectroHardl   (15.08.2010 в 17:12)   письмо автору
 
   для: Николай2357   (15.08.2010 в 15:00)
 

Можно и так. А можно вообще совместить все в 1.

  Ответить  
 
 автор: Николай2357   (15.08.2010 в 15:00)   письмо автору
 
   для: Лена   (14.08.2010 в 17:06)
 

Можно же еще проще... Одним запросом все решить раз и на всегда. Лень переписывать, вот тут есть.

  Ответить  
 
 автор: lElectroHardl   (14.08.2010 в 17:25)   письмо автору
 
   для: Лена   (14.08.2010 в 17:06)
 

Я это исправил уже, спасибо.

  Ответить  
 
 автор: Лена   (14.08.2010 в 17:06)   письмо автору
 
   для: lElectroHardl   (14.08.2010 в 17:01)
 

Я говорила по коду от (14.08.2010 в 14:18) - как я поняла, улучшенному и дополненному. Все, что выше, я почти не смотрела. Сравните еще раз внимательно свое и мое. Вы, не зная, есть ли у вас пользователь или нет, начинаете с запроса к базе - это по вашему одно и то же?

  Ответить  
 
 автор: lElectroHardl   (14.08.2010 в 17:01)   письмо автору
 
   для: Лена   (14.08.2010 в 16:17)
 

Вообще-то у меня такая же структура скрипта. Почему вы считаете ее путаной, если написали в точности такой же скрипт (за исключением запроса к базе)?

  Ответить  
 
 автор: Лена   (14.08.2010 в 16:17)   письмо автору
 
   для: lElectroHardl   (14.08.2010 в 14:18)
 

Сама логика скрипта путанная, говорит, что вы не совсем понимаете, что в нем делается. Я бы делала так(показываю схематически, т.к. так быстрее):

<?php
  
if (!isset($_SERVER['PHP_AUTH_USER'])) {
      
// пользователь неизвестен
    
header("WWW-Authenticate: Basic realm=\"My Realm\"");
    
header("HTTP/1.0 401 Unauthorized");
    exit;
  } else {
      
//пользователь($_SERVER['PHP_AUTH_USER') есть, надо проверить, есть ли запись про него в базе 
    //ваш запрос
    
if (mysql_num_rows($lst) == 0)    
    
// пользователя с таким именем нет в БД, отклик 401
        
Header("WWW-Authenticate: Basic realm="Admin Center"");
        
Header("HTTP/1.0 401 Unauthorized");
        exit();
    }else{    
    
// пользователь с таким именем есть в БД, надо проверить совпадают ли пароли
           
$pass mysql_fetch_assoc($lst);
        if ( 
$pass['pass'] != md5($_SERVER['PHP_AUTH_PW']) ){
            
            
//пароли не совпали - отклик 401
        
        
}
    }
  }
?>

  Ответить  
 
 автор: tvv123456   (14.08.2010 в 14:24)   письмо автору
 
   для: lElectroHardl   (14.08.2010 в 14:18)
 

Да вы видать через строчку читаете
Я насчет этого блока:

if ( !isset($_SERVER['PHP_AUTH_USER']) )   
{   
    Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); 
    Header ("HTTP/1.0 401 Unauthorized"); 
    exit();   



Его нужно в самое начало, иначе от него смысла 0
И зря вы из этой вот(именно этой строки!!!
$query = "SELECT * FROM adm_zone WHERE user='".($_SERVER['PHP_AUTH_USER'])."'"; 


убрали mysql_real_escape_string(),

из вышесказанного вывод-> вы вообще не понимаете(даже приблизительно) как работает этот скрипт и для чего нужен тот или иной его элемент, а следовательно рано еще заниматься сайтом, самое время заняться самообразованием

  Ответить  
 
 автор: lElectroHardl   (14.08.2010 в 14:20)   письмо автору
 
   для: tvv123456   (13.08.2010 в 22:35)
 

А чем
!$_SERVER...
отличается от
!isset($_SERVER...)
?

  Ответить  

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

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

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