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

Форум PHP

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

 

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

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

тема: Авторизация не работает
 
 автор: Stariy2014   (09.11.2010 в 09:55)   письмо автору
 
 

пВообщем взял с сайта http://softtime.ru/info/authorization.php?down=authorization.zip , эти фалый сделал авторизацию через ДЭНВЕР все работало, выложил сайт на рег.ру настроил фаил конфиг тобыш само подключеник базе итд , вылетает окно ввода логина и пароля (по алгоритму туда забил уже логин и парол АДМИН, АДМИН) и в итоге нефига не пускат меня при вводе пароля все перелазел мозги уже на бикрень, думаю может глюк какойнить в файле security_mod.php,

<?php
///////////////////////////////////////////////////
// Система авторизации HTTP-Basic авторизации
// 2003-2005 (C) IT-студия SoftTime (http://www.softtime.ru)
// Симдянов И.В. (simdyanov@softtime.ru)
///////////////////////////////////////////////////
// Устанавливаем соединение с базой данных
require_once("config.php");
// Если пользователь не авторизовался - авторизуемся
if(!isset($_SERVER['PHP_AUTH_USER']))
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
// Утюжим переменные $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'],
// чтобы мышь не проскочила
if (!get_magic_quotes_gpc())
{
$_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
}
$_SERVER['PHP_AUTH_USER'] = str_replace("'","`",$_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_PW'] = str_replace("'","`",$_SERVER['PHP_AUTH_PW']);

$query = "SELECT pass FROM userlist WHERE name='".$_SERVER['PHP_AUTH_USER']."'";
$lst = @mysql_query($query);
// Если ошибка в SQL-запросе - выдаём окно
if(!$lst)
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
// Если такого пользователя нет - выдаём окно
if(mysql_num_rows($lst) == 0)
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
// Если все проверки пройдены, сравниваем хэши паролей
$pass = @mysql_fetch_array($lst);
if(md5($_SERVER['PHP_AUTH_PW']) != $pass['pass'])
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
}
?>

  Ответить  
 
 автор: codename   (13.11.2010 в 21:48)   письмо автору
 
   для: Stariy2014   (09.11.2010 в 09:55)
 

Смотри внимательнее!
На хостинге обычно к названию БД добавляют префикс например если была BD на локальной машине, то на хостинге u4875_BD либо хост не поддерживают POST передачу.

  Ответить  
 
 автор: sl1p   (13.11.2010 в 22:02)   письмо автору
 
   для: codename   (13.11.2010 в 21:48)
 

чоткий хост еси не поддерживает)

  Ответить  
 
 автор: codename   (13.11.2010 в 22:16)   письмо автору
 
   для: sl1p   (13.11.2010 в 22:02)
 

Если не поддерживает страхуйся таким образом:

if(isset($_POST['login']))
{
$login=$_POST['login'];
}
if(isset($_POST['pass']))
{
$pass=$_POST['pass'];
}

Тобиш, если имеется $_POST['login'] а он передается из формы Логина.
И то же действие с пассом

  Ответить  
 
 автор: tvv123456   (14.11.2010 в 12:42)   письмо автору
 
   для: codename   (13.11.2010 в 22:16)
 

А причем тут вообще POST?

Автору темы:
Вы бы убрали на время установки подавление ошибок, мало ли что, может проблема там(не проходит запрос к базе, например), да и вообще если что-то не работает, то первым делом нужно включать вывод всех ошибок на экран, а дальше по обстоятельствам

у вас случаем платформа не виндоус на хосте, если да то скорей меняйте? :)
По идее это должно работать, если php стоит как модуль апача

  Ответить  
 
 автор: mihdan   (14.11.2010 в 01:08)   письмо автору
 
   для: Stariy2014   (09.11.2010 в 09:55)
 

РНР отдельно стоит или как модуль Апапче?

  Ответить  
 
 автор: z668   (15.03.2011 в 23:31)   письмо автору
 
   для: mihdan   (14.11.2010 в 01:08)
 

Столкнулся с подобной проблемой. Авторизация отказывается работать на мой взгляд если php как fast cgi. Как обойти данную проблему?

  Ответить  
 
 автор: cheops   (15.03.2011 в 23:36)   письмо автору
 
   для: z668   (15.03.2011 в 23:31)
 

Если CGI - нужно переписывать авторизацию, этот режим не поддерживает Basic-авторизацию. Если вызывает затруднение, могу выложить патч для security_mod.php, который преобразует Basic-авторизацию в обычную.

  Ответить  
 
 автор: z668   (15.03.2011 в 23:37)   письмо автору
 
   для: cheops   (15.03.2011 в 23:36)
 

Было бы очень кстати. Спасибо.

  Ответить  
 
 автор: cheops   (15.03.2011 в 23:40)   письмо автору
 
   для: z668   (15.03.2011 в 23:37)
 

Замените содржимое файла на следующее
<?php
  
////////////////////////////////////////////////////////////
  // 2003-2011 (C) IT-студия SoftTime (http://www.softtime.ru)
  ////////////////////////////////////////////////////////////
  // Стартуем сессию
  
@session_start();
  if(empty(
$_SESSION['PHP_AUTH_USER']))
  {
    
$elem['name'] = new field_text_english("name",
                             
"Имя пользователя",
                             
true,
                             
$_POST['name']);
    
$elem['pass'] = new field_password("pass",
                             
"Пароль",
                             
true,
                             
$_POST['pass'],
                             
255,
                             
41);

    
$form = new form($elem,
                     
"Войти",
                     
"main_txt",
                     
"",
                     
"input");

    if(!empty(
$_POST))
    {
      
// Проверяем корректность заполнения HTML-формы
      // и обрабатываем текстовые поля
      
$error $form->check();
  
      
// Проверяем зарегистрирован ли пользователь
      
$query "SELECT COUNT(*) FROM $tbl_accounts
                WHERE name = '
{$form->fields[name]->value}'";
      if(!
query_result($query))
      {
        
$error[] = "Пользователь с именем
                   &quot;
{$form->fields[name]->value}&quot; не существует";
      }
  
      
// Входим
      
if(empty($error))
      {
        
$query "SELECT COUNT(*) FROM $tbl_accounts
                  WHERE name = '
{$form->fields[name]->value}' AND
                        pass = MD5('
{$form->fields[pass]->value}')";
        if(
query_result($query))
        {
          
$_SESSION['PHP_AUTH_USER'] = $form->fields['name']->value;
        }
  
        
// Возвращаемся на индексную страницу
        
header("Location: $_SERVER[REQUEST_URI]");
  
        exit();
      }
    }
    
$pagename "Необходима авторизация";
    
// Включаем заголовок страницы
    
require_once("../utils/top.php");

    if(
is_object($form)) 
    {
      
// Выводим сообщения об ошибках если они имеются
      
if(!empty($error)) echo error($error);
      
// Выводим HTML-форму 
      
$form->print_form();
    }

    
// Включаем завершение страницы
    
require_once("../utils/bottom.php");
    exit();
  }
?>

  Ответить  
 
 автор: z668   (15.03.2011 в 23:41)   письмо автору
 
   для: cheops   (15.03.2011 в 23:40)
 

Спасибо

  Ответить  
Rambler's Top100
вверх

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