Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Проверка авторизации пользователя.

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
aktuba

цитировать



Зарегистрирован: 18 Янв 2008 10:24:01
Сообщения: 38

СообщениеДобавлено: 26 Янв 2008 02:51:47    Заголовок сообщения: Проверка авторизации пользователя. Ответить с цитатой

Такая задача: на странице надо выводить 'Вход' (для незарегистрированного пользователя) или 'Выход' (для зарегистрированного). Для отображения создал элемент, но вот как в элементе проверить - не понимаю...

P.S.: CakePHP - 1.2
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
evilbloodydemon

цитировать



Зарегистрирован: 11 Окт 2007 20:32:19
Сообщения: 125

СообщениеДобавлено: 26 Янв 2008 10:36:21    Заголовок сообщения: Ответить с цитатой

см. requestAction.

в модели user нужно добавить функцию islogged и реквестить оттуда значение.
_________________
поздняк метаться - ракеты в воздухе
jabber-конференция по CakePHP - xmpp:cakephp@conference.jabber.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
aktuba

цитировать



Зарегистрирован: 18 Янв 2008 10:24:01
Сообщения: 38

СообщениеДобавлено: 27 Янв 2008 02:00:08    Заголовок сообщения: Ответить с цитатой

Спасибо, помогло... Но возникла следующая проблема. После авторизации необходимо перекинуть пользователя на главную страницу. Делаю так:

Код:

function login() {
  if(!empty($this->data)) {
    if(($user = $this -> User -> validateLogin($this -> data['User'])) == true) {
      $this -> Session -> write('User', $user);
      $this -> redirect('/');
    }
  }
}


в итоге, получаю ошибку:
Цитата:
Warning (2): Cannot modify header information - headers already sent by (output started at C:\AppServ\www\aktuba.rru\www\app\controllers\users_controller.php:39) [CORE\cake\libs\controller\controller.php, line 546]


Подскажете - что не так делаю?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
evilbloodydemon

цитировать



Зарегистрирован: 11 Окт 2007 20:32:19
Сообщения: 125

СообщениеДобавлено: 27 Янв 2008 09:37:01    Заголовок сообщения: Ответить с цитатой

в предыдущем посте я чета вместо контроллера модель написал. там должен быть контроллер.
вот как у меня сделано:
Код:

<?php

class UsersController extends AppController
{
   var $name = "Users";

   /**
    * @var User
    */
   var $User;

   function login()
   {
      $this->set('error', false);

      if(!empty($this->data))
      {
         $someone = $this->User->findByName($this->data['User']['name']);

         if(!empty($someone['User']['password'])
         && $someone['User']['password'] == $this->data['User']['password'])
         {
            $this->Session->write('User', $someone['User']);
            $this->redirect('/');
         }
         else
         {
            $this->set('error', true);
         }
      }
   }

   function logout()
   {
      $this->Session->delete('User');
      $this->redirect('/');
   }

   function logstatus()
   {
      if(isset($this->params['requested']))
      {
         return $this->Session->read('User');
      }
   }
   
   function index()
   {
      $this->User->recursive = 0;
      $this->set('users', $this->paginate());
   }
}
?>

_________________
поздняк метаться - ракеты в воздухе
jabber-конференция по CakePHP - xmpp:cakephp@conference.jabber.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
aktuba

цитировать



Зарегистрирован: 18 Янв 2008 10:24:01
Сообщения: 38

СообщениеДобавлено: 28 Янв 2008 06:00:33    Заголовок сообщения: Ответить с цитатой

Цитата:
в предыдущем посте я чета вместо контроллера модель написал. там должен быть контроллер.


Это я понял сразу... А вот redirect у меня не работает =(
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
evilbloodydemon

цитировать



Зарегистрирован: 11 Окт 2007 20:32:19
Сообщения: 125

СообщениеДобавлено: 28 Янв 2008 08:37:38    Заголовок сообщения: Ответить с цитатой

Цитата:
C:\AppServ\www\aktuba.rru\www\app\controllers\users_controller.php:39

а там что происходит?? уж не вывод ли данных каких-нибудь?? если да, то сервер не может сообщить о редиректе, потому что уже отослал заголовки (собственно говоря, он так и пишет)
_________________
поздняк метаться - ракеты в воздухе
jabber-конференция по CakePHP - xmpp:cakephp@conference.jabber.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
aktuba

цитировать



Зарегистрирован: 18 Янв 2008 10:24:01
Сообщения: 38

СообщениеДобавлено: 28 Янв 2008 13:44:58    Заголовок сообщения: Ответить с цитатой

Код:

<?php
class UsersController extends AppController {

   var $name = "Users";
   var $helpers = array('Html', 'Form');

   function index() {

    }

   function register() {

   }

   function login() {
      // Если авторизованы - переход на главную
      if(!empty($this->data)) {
         if(($user = $this -> User -> validateLogin($this -> data['User'])) == true) {
            $this -> Session -> write('User', $user);
            $this -> redirect('/');
         }
        }
   }

   function logout() {

   }

   function isLogin() {
      $res = false;
      $usr = '';
      $usr = $this -> Session -> read('User');
      if(empty($usr) == false)
         $res = true;
      return $res;
   }
}
?>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Антон Исайкин
Site Admin
цитировать



Зарегистрирован: 08 Окт 2007 12:02:56
Сообщения: 150
Откуда: Санкт-Петербург

СообщениеДобавлено: 28 Янв 2008 19:38:53    Заголовок сообщения: Ответить с цитатой

У вас до <?php написан возврат каретки. Ну, или если это только тут, то, возможно, вы используете utf-8, и вас мучают BOMы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
aktuba

цитировать



Зарегистрирован: 18 Янв 2008 10:24:01
Сообщения: 38

СообщениеДобавлено: 28 Янв 2008 20:01:39    Заголовок сообщения: Ответить с цитатой

Цитата:
У вас до <?php написан возврат каретки.

Нет.

Цитата:
Ну, или если это только тут, то, возможно, вы используете utf-8, и вас мучают BOMы.

Тоже нет =(. Перевел все на ansi, не помогло =(. Та же самая ошибка =(((
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
aktuba

цитировать



Зарегистрирован: 18 Янв 2008 10:24:01
Сообщения: 38

СообщениеДобавлено: 28 Янв 2008 20:09:32    Заголовок сообщения: Ответить с цитатой

Странно. Вставил пока что в начало app/webroot/index.php:
Код:
ob_start();


Работает... Но не нравится мне этот обходной маневр =(((( Может есть идеи, какие заголовки может отправлять cakephp?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Антон Исайкин
Site Admin
цитировать



Зарегистрирован: 08 Окт 2007 12:02:56
Сообщения: 150
Откуда: Санкт-Петербург

СообщениеДобавлено: 28 Янв 2008 20:38:28    Заголовок сообщения: Ответить с цитатой

Складывание в буффер -- это не выход. Ищите. Вывод все равно где-то происходит. Прогоните все через скрипт, ссылку на который я вам дал. Проверьте модель. Возможно вывод есть после ?>.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
aktuba

цитировать



Зарегистрирован: 18 Янв 2008 10:24:01
Сообщения: 38

СообщениеДобавлено: 29 Янв 2008 18:17:48    Заголовок сообщения: Ответить с цитатой

Антон Исайкин спасибо!
Для других - проблема была в пробеле после ?>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru