Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> авторизация, мой "экспиримент" 
:(
    Опции темы
Keanor
Дата 14.6.2009, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 2.6.2009

Репутация: нет
Всего: нет



Вот решил попробовать сделать авторизацию с помощью только одной функции, которая проверяет авторизирован пользователь или нет.

файл index.php
Код

    if (empty($_POST['username']) || empty($_POST['userpass'])) {
        $content = "<p>Введите свой логин и пароль</p>";
    } else {
        SetCookie("uname", $_POST['username']);
        SetCookie("upass", $_POST['userpass']);
        //print_r($_COOKIE);
        if ($user->is_user()) {
            $content = "<p>Добро пожаловать</p>";
        } else {
            SetCookie("uname");
            SetCookie("upass");
            $content = "<p>Неверное имя и/или пароль</p>";
        }
    }
    echo $content;

Код

<form method="POST">
    <input type="text" name="username" value="">
    <input type="password" name="userpass" value="">
    <input type="Submit">
</form>


Проблема в там что как только открываешь браузер и первый раз нажимаешь кнопку кукисы не записываются, и выдается сообщение "<p>Неверное имя и/или пароль</p>" так как функция is_user проверяет cookies. Если второй раз или более нажимаешь то все нормально...

Но ведь строчка
Код

$content = "<p>Неверное имя и/или пароль</p>";

не может выполнится пройдя мимо
Код

        SetCookie("uname", $_POST['username']);
        SetCookie("upass", $_POST['userpass']);

Следовательно если мы видим сообщение о неверном имени и пароле значит куксы должны быть установленны!

Подскажите в чем ошибка моих суждений)
PM MAIL   Вверх
bazzjr
Дата 14.6.2009, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 27.12.2007
Где: Россия, Пермь

Репутация: 4
Всего: 6



Все очевидно, не выполняется эта строка

Код

if ($user->is_user())


и всегда у тебя будет $content = "<p>Неверное имя и/или пароль</p>"
PM MAIL ICQ   Вверх
Keanor
Дата 16.6.2009, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 2.6.2009

Репутация: нет
Всего: нет



Цитата

Все очевидно, не выполняется эта строка

Выделить всёкод PHP
1:
    
if ($user->is_user())


и всегда у тебя будет $content = "<p>Неверное имя и/или пароль</p>"


вот код этой функции

Код

        function is_user() {
            global $mysql;
            if (empty($_COOKIE['uname']) || empty($_COOKIE['upass'])) {
                $return = false;
            } else {
                $user = $mysql->security($_COOKIE['uname']);
                $pass = md5($mysql->security($_COOKIE['upass']));
                $sql = "SELECT `user_id` FROM `users` WHERE (`user_name`='{$user}') AND (`user_pass`='{$pass}');";
                $mysql->query($sql);
                if ($mysql->num_rows==1) {
                    return true;
                }
            }
        }


вы правы, она возвращает false, потому что кукисы пустые при первой отправке формы
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.