Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

авторизация ...
http://forum.kohanaframework.su/viewtopic.php?f=31&t=305
Страница 1 из 1

Автор:  aziz [ 10 авг 2012, 22:52 ]
Заголовок сообщения:  авторизация ...

Доброго времени суток!
Скрипт авторизует всех подряд... Не получается придумать правильный запрос к БД, или контроллер чтобы не зарегестрировнные пользователи не могли авторизоваться. Ошибку не выводит.
Модель
Код:
public function user_login($user_name, $user_password)
    {
        $result = DB::select()
            ->from($this->_tableUsers)
            ->where('user_name', '=', $user_name)
            ->and_where('user_password', '=', md5($user_password))
            ->execute();
       if($result)
        {
            return $result;
        }       
        else
            return false;
    }


Контроллер
Код:
      $check_login = Model::factory('User_Authorization');
      $check_login->user_login($user_name, $user_password);
                     
      if($check_login == true)
      {             
            $content = View::factory('user/login')
                  ->set('user_name', $user_name);
            $this->template->content = $content;   
      }

Вид
Код:
<?php if(!isset($user_name)): ?>
<h2>Войти</h2><hr /><br />
<form method="post" name="login" action="<?php echo URL::site('user/authorization/login'); ?>" >
<b>Логин:</b><br />
<input type="text" name="user_name" id="user_name" /><br />
<b>Пароль:</b><br />
<input type="password" name="user_password" id="user_password" /><br /><br />
<input type="checkbox" name="remember" value="remember_me" id="remember_me" />&nbsp;Запомнить<br /><br />
<input type="submit" value="  Войти  " name="login" id="login" /><br />
</form>

<!-- Приветствие пользователю -->
<?php
else : echo 'Добрый день, <b>' . $user_name . '</b>.<br /> ';
endif;
?>


P.S. Намного легче было придумать скрипт регистрации...

Автор:  eBasher [ 10 авг 2012, 23:18 ]
Заголовок сообщения:  Re: авторизация ...

Проверьте, что содержиться в $result в модели в случае неправильного ввода. Мне кажется условие именно там не срабатывает.

Автор:  aziz [ 11 авг 2012, 00:52 ]
Заголовок сообщения:  Re: авторизация ...

а как можно проверить? и как обращаться к параметрам объекта класса МОДЕЛЬ?

Автор:  Sergey [ 11 авг 2012, 06:05 ]
Заголовок сообщения:  Re: авторизация ...

Код:
public function action_signin()
  {
    // Проверям, вдруг пользователь уже зашел
    if (Auth::instance()->logged_in())
    {
      // И если это так, то отправляем его сразу на страницу пользователей
      return $this->request->redirect('user');
    }

    // Если же пользователь не зашел, но данные на страницу пришли, то:
    if ($_POST)
    {
      // Создаем переменную, отвечающую за связь с моделью данных User
      $user = ORM::factory('user');
      // в $status помещаем результат функции login
      $status = Auth::instance()->login($_POST['username'], $_POST['password']);

      // Если логин успешен, то
      if ($status)
      {
        // Можем даже проверить, не админ ли это
        if (Auth::instance()->logged_in('admin'))
          // Если админ, редиректим в админку
          $this->request->redirect('admin');
        // Если логин успешен и это не админ, отправляем пользователя на его страницу
        $this->request->redirect('user');
      }
      else
      {
        // Иначе ничего не получилось, грузим CSS для вывода ошибки
          $this->template->styles['public/css/error.css'] = 'screen, projection';

          // И пишем ...
          // Только не забываем где нибудь определить $errors
          $this->errors[] = 'Неверный логин или пароль!';
      }
    }

    // Грузим view логина, передаем туда ошибку через bind
    $content = View::factory('sign/' . $this->request->action())
             ->bind('errors', $this->errors);
    // Общая CSS для авторизации
    $this->template->styles['public/css/signin.css'] = 'screen, projection';
    // Заголовок
    $this->template->title = 'Авторизация';
    $this->template->content = $content;

  }

Автор:  admin [ 11 авг 2012, 16:47 ]
Заголовок сообщения:  Re: авторизация ...

Sergey - а вы всегда ORM используете ? :)

Цитата:
а как можно проверить?

Например, с помощью var_dump можно.

Автор:  Sergey [ 12 авг 2012, 11:52 ]
Заголовок сообщения:  Re: авторизация ...

admin писал(а):
Sergey - а вы всегда ORM используете ? :)


А что в этом плохого?

admin писал(а):
Цитата:
а как можно проверить?
Например, с помощью var_dump можно.


Код:
Debug::vars($value);
Debug::dump($value)
Debug::trace($value);

Автор:  aziz [ 30 авг 2012, 18:06 ]
Заголовок сообщения:  Re: авторизация ...

Я пока что не использую ORM... хочу все сделать сам ... а получается как всегда...

Вывожу данные через $_POST
Код:
<?php print_r (Request::current()->post()); ?>

код выводит данные (вписанные в форму логина), но опять таки База Данных допускает такого пользователя....

Автор:  aziz [ 30 авг 2012, 18:23 ]
Заголовок сообщения:  Re: авторизация ...

Вот скрин:
Вложение:
di-9134633277316.jpg
di-9134633277316.jpg [ 67.21 КБ | Просмотров: 7148 ]

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/