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

Форум PHP

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

 

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

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

тема: Не могу пройти авторизацию на собственном сайте

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

 
 автор: Keks   (15.09.2008 в 16:41)   письмо автору
 
   для: Keks   (15.09.2008 в 15:52)
 

исправил код, перезалил на два сервера (3eu.ru и jino-net.ru), авторизация работает, спасибо за помощь! на 3eu.ru работает нормально, а вот на джино-нет.ру что-то не то! сначала выдает страницу, на которой написано, что авторизация пройдена и вы сейчас будете перемещены (даже меню авторизированного пользователя есть), а при переходе на другую страницу (т.е. при обновлении страницы) вся "авторизованность" как-будто теряется! словно я и не проходил авторизацию, снова форма вверху каждой страницы рисуется! не знаете, из за чего?
повторюсь, это только на джино-нет такая байда....

  Ответить  
 
 автор: Keks   (15.09.2008 в 15:52)   письмо автору
 
   для: Trianon   (15.09.2008 в 15:43)
 

ну они там не определены потому, что вытаскиваются из базы в самом начале файла global.php, вот код:

<?php
$get_settings 
= @mysql_query("SELECT * FROM settings WHERE id_user=1");
// Если при запросе произошла ошибка
if (!$get_settings)
{
    
// то выводим сообщение об ошибке пользователю
    
mysql_error();
    exit;
}
else
{
    
// если ошибки не произошло,
    // то преобразуем результат запроса в переменные
    
while ($settings mysql_fetch_array($get_settings))
    {
        
// Логин и пароль пользователя
        
$login $settings['login'];
        
$passw $settings['passw'];
    }
}
?>

не удивляйтесь, что логин и пароль запрашиваются из таблицы settings, просто сайт рассчитан только на одного зарегистрированного пользователя, и регистрация происходит сразу при установке скрипта на сервер.
P.S. в файле authorization.php форма и не должна выводиться, в этом файле только проверка осущесвляется

  Ответить  
 
 автор: Trianon   (15.09.2008 в 15:43)   письмо автору
 
   для: Keks   (15.09.2008 в 15:37)
 

в строке if (!check_auth($login, $password))
обе переменные не определены.

И как результат,если в $_COOKIE['login'] и $_COOKIE['password'] окажутся сравнимые с нулем значения (false или нули, к примеру) - форма выведена не будет .
А если кроме формы не выводилось вообще ничего, то при заблокированных нотайсах мы увидим пустую страницу.

  Ответить  
 
 автор: Keks   (15.09.2008 в 15:37)   письмо автору
 
   для: Trianon   (15.09.2008 в 14:26)
 

вот код формы:

<?php
// инициируем сессию
session_start();
// Функция, которая проверяет, авторизирован ли пользователь блога
function check_auth ($login$password)
{
    
// Проверяем, авторизирован ли пользователь в этой сессии
    
if (isset($_SESSION['auth']))
    {
        if (
$_SESSION['auth'] == "yes") return $check true;
        else return 
$check false;
    }
    
// если нет, то проверяем куки
    
elseif (isset($_COOKIE['login']) && isset($_COOKIE['password']))
    {
        if (
$_COOKIE['login'] == $login && $_COOKIE['password'] == $password) return $check true;
        else return 
$check false;
    }
    
// иначе возвращаем отрицательный результат проверки
    
else
    {
        return 
$check false;
    }
}
if (!
check_auth($login$password))
{
echo 
"<form action='./authorization.php' method='post'>
    <div>Логин:</div>
    <div><input type='text' maxlength='32' name='login'></div>
    <div>Пароль:</div>
    <div><input type='password' maxlength='32' name='passw'></div>
    <div><input type='checkbox' name='setcookie'>Запомнить меня</div>
    <input type='hidden' name='sid' value='"
.session_id()."'>
    <div><input type='submit' value='Войти'></div>
</form>"
;
}
?>

ну этот код находится в файле global.php, который во все остальные посредством require_once() вставляется.

  Ответить  
 
 автор: Trianon   (15.09.2008 в 14:54)   письмо автору
 
   для: mihdan   (15.09.2008 в 14:42)
 

Это ответ на Ваше предложение.

  Ответить  
 
 автор: mihdan   (15.09.2008 в 14:42)   письмо автору
 
   для: Trianon   (15.09.2008 в 14:40)
 

Согласен с вами

>А статьей бороться с книгой (и не одной) которую, не исправляя, повторно переиздают - бессмысленно.
Это я понял камень в огород cheops'a

  Ответить  
 
 автор: Trianon   (15.09.2008 в 14:40)   письмо автору
 
   для: mihdan   (15.09.2008 в 14:33)
 

Жевано-пережевано двадцать раз.
Сам подход "фильтровать всё без разбора чем-то единым" - порочен.
Сухой остаток оформлен в 21-ю задачу. Примеры решения присутствуют.

А статьей бороться с книгой (и не одной) которую, не исправляя, повторно переиздают - бессмысленно.

  Ответить  
 
 автор: mihdan   (15.09.2008 в 14:33)   письмо автору
 
   для: Trianon   (15.09.2008 в 14:26)
 

Давно уже пора вам маленькую статейки кидануть, а то что-то часто этот вопрос возникает "что как и где фильтровать и чем и зачем"

  Ответить  
 
 автор: Trianon   (15.09.2008 в 14:26)   письмо автору
 
   для: Keks   (15.09.2008 в 11:32)
 

тем, что его применили не там, где требуется.

Вы хотите знать, почему Ваш код не работает.
Я пытаюсь разобраться, как он работает.
И если вижу непонятные куски - спрашиваю у Вас: зачем здесь это?

Форму с этим самым скрытым полем Вы не показали.
Как мне определить, что у Вас там в поле осталось?

  Ответить  
 
 автор: Keks   (15.09.2008 в 11:32)   письмо автору
 
   для: Trianon   (15.09.2008 в 09:45)
 

нашел на этом сайте в статье "безопасное программирование на php" кусок кода авторизации с mysql, так вот у меня все почти так же как и там. а чем использование htmlspecialchars в данном случае плохо?

  Ответить  

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

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

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