Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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:
Работает... Но не нравится мне этот обходной маневр =(((( Может есть идеи, какие заголовки может отправлять 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 Заголовок сообщения: |
|
|
Антон Исайкин спасибо!
Для других - проблема была в пробеле после ?> |
|
Вернуться к началу |
|
|
|