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

Форум PHP

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

 

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

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

тема: Авторизация - какой способ лучше?

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

 
 автор: Balamut182   (19.05.2006 в 13:47)   письмо автору
 
   для: DDK   (15.05.2006 в 18:18)
 


<? 
function check_auth() { 
  global 
$PHP_AUTH_USER,$PHP_AUTH_PW,$admincp_users
  
$md5pass=md5(mysql_escape_string(trim($PHP_AUTH_PW))); 
   
  if(!isset(
$PHP_AUTH_USER)) { 
    
header("WWW-Authenticate: Basic realm=\"CMS\""); 
    
header("HTTP/1.0 401 Unauthorized"); 
    echo 
"Неверный пароль и/или логин.\n"
    exit; 
  } else { 
      
$PHP_AUTH_USER mysql_escape_string(trim($PHP_AUTH_USER)); 
    
$md5pass $md5pass
    
$query="SELECT * FROM $admincp_users WHERE username='$PHP_AUTH_USER' AND password='$md5pass'"
    
$result=mysql_query($query); 
    
$number=mysql_num_rows($result); 
    if(
$number!=1) { 
        
header("WWW-Authenticate: Basic realm=\"CMSl\""); 
        
header("HTTP/1.0 401 Unauthorized"); 
        echo 
"<center><br><br><font color='#FF0000'>Неверный пароль и/или логин !</font></center>"
        exit; 
    } else { 
        
$usr=mysql_fetch_array($result); 
        
$PHP_AUTH_USER $usr['username']; 
        if(
$checkcnt == 0) { 
            unset(
$PHP_AUTH_USER); 
            unset(
$PHP_AUTH_PW); 
            
header("HTTP/1.0 403 Access Forbidden"); 
            exit; 
        } 
    } 
#end if 
    
return; 
  } 
#end function 
check_auth(); 
?> 

А что за переменная $checkcnt == 0 в последнем условии if, я не понял

   
 
 автор: Balamut182   (16.05.2006 в 12:51)   письмо автору
 
   для: Jura   (15.05.2006 в 18:32)
 

Спаибо всем откликнувшимся

   
 
 автор: cheops   (15.05.2006 в 23:18)   письмо автору
 
   для: ec_stasis   (15.05.2006 в 15:32)
 

>А что за бейсик метод?
Он представлен в скрипте http://www.softtime.ru/info/authorization.php - HTTP Basic Authentification.

   
 
 автор: Jura   (15.05.2006 в 18:32)   письмо автору
 
   для: Balamut182   (15.05.2006 в 13:16)
 

Чем больше способов защиты тем сложнее ее обойти. Ни куки, ни сессии, и темболее базовый метод авторизации не совершенны. а в совокупности они дают довольно серьезную защиту с различными методами шифрации естественно.

   
 
 автор: DDK   (15.05.2006 в 18:18)   письмо автору
 
   для: [InLine]Scorpion   (15.05.2006 в 17:42)
 

Нет, не совсем. Вот пример:

<?
function check_auth() {
  global 
$PHP_AUTH_USER,$PHP_AUTH_PW,$admincp_users;
  
$md5pass=md5(mysql_escape_string(trim($PHP_AUTH_PW)));
  
  if(!isset(
$PHP_AUTH_USER)) {
    
header("WWW-Authenticate: Basic realm=\"CMS\"");
    
header("HTTP/1.0 401 Unauthorized");
    echo 
"Неверный пароль и/или логин.\n";
    exit;
  } else {
      
$PHP_AUTH_USER mysql_escape_string(trim($PHP_AUTH_USER));
    
$md5pass $md5pass;
    
$query="SELECT * FROM $admincp_users WHERE username='$PHP_AUTH_USER' AND password='$md5pass'";
    
$result=mysql_query($query);
    
$number=mysql_num_rows($result);
    if(
$number!=1) {
        
header("WWW-Authenticate: Basic realm=\"CMSl\"");
        
header("HTTP/1.0 401 Unauthorized");
        echo 
"<center><br><br><font color='#FF0000'>Неверный пароль и/или логин !</font></center>";
        exit;
    } else {
        
$usr=mysql_fetch_array($result);
        
$PHP_AUTH_USER $usr['username'];
        if(
$checkcnt == 0) {
            unset(
$PHP_AUTH_USER);
            unset(
$PHP_AUTH_PW);
            
header("HTTP/1.0 403 Access Forbidden");
            exit;
        }
    } 
#end if
    
return;
  }
#end function
check_auth();
?>

   
 
 автор: Ireruss   (15.05.2006 в 18:15)
 
   для: ec_stasis   (15.05.2006 в 15:32)
 

Обычно, под базовой регистрацией понимают использование базовых средств протокола http, imho.
РНР-функцией header() посылается заголовок с кодом (405, если не ошибаюсь), браузер должен выдать форму ввода пользователь/пароль и отослать введенные данные в ответ на запрос сервера.

   
 
 автор: ec_stasis   (15.05.2006 в 17:47)   письмо автору
 
   для: [InLine]Scorpion   (15.05.2006 в 17:42)
 

и что этот способ из себя представляет?

   
 
 автор: [InLine]Scorpion   (15.05.2006 в 17:42)   письмо автору
 
   для: ec_stasis   (15.05.2006 в 15:32)
 

Видимо .htaccess имелся ввиду

   
 
 автор: ec_stasis   (15.05.2006 в 15:32)   письмо автору
 
   для: cheops   (15.05.2006 в 15:09)
 

А что за бейсик метод?

   
 
 автор: cheops   (15.05.2006 в 15:09)   письмо автору
 
   для: Balamut182   (15.05.2006 в 13:16)
 

Лучше использоваться для хранения данных MySQL, а авторизацию строить либо на сессиях, либо basic-методом.

   

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

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

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