Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2013, 18:32   #1
amico
Пользователь
 
Аватар для amico
 
Регистрация: 08.11.2009
Сообщений: 32
Восклицание Ошибка Yii::app()->user->login($identity)

Есть функция в контроллере:
PHP код:
public function actionVhod()
    {   
$model = new Users;
        if(isset(
$_POST['yt0']) =='Ввойти')
        {   

        
Yii::app()->user->logout();
        
$username $_POST['Users']['username'];  
        
$password $_POST['Users']['password']; 
       
       
$identity=new UserIdentity($username,$password);
        if (
$identity->authenticate())
        { 
            
Yii::app()->user->login($identity);
        }
        else { 
            echo 
$identity->errorMessage;}
        }
        
$this->render('vhod',array('model'=>$model)); 
Так объявлен класс:
PHP код:
<?php
class UserIdentity extends CUserIdentity
{    private $_id;
    public function 
authenticate()
    {
        
$record=Users::model()->findByAttributes(array('log'=>$this->username));
        if(
$record==array())
            
$this->errorCode=self::ERROR_USERNAME_INVALID;
        else if(
$record->pas!==$this->password)
            
$this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
        {
            
$this->_id=$record->id;
            
$this->setState('title'$record->log);
            
$this->errorCode=self::ERROR_NONE;
        }
        return !
$this->errorCode;
    }
 
    public function 
getId()
    {
        return 
$this->_id;
    }
}
?>
Браузер выдает ошибку на строке:
PHP код:
Yii::app()->user->login($identity
пишет, что заголовки уже отосланы....

не могу разобраться( в чем дело?!
amico вне форума Ответить с цитированием
Старый 13.07.2013, 18:41   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от amico Посмотреть сообщение
пишет, что заголовки уже отосланы....
В тексте ошибки должен быть указан скрипт и номер строки в нём, где начинается вывод в браузер, препятствующий добавлению информации в HTTP заголовки.
Решение проблемы "Cannot add header information - headers already sent"
Andkorol вне форума Ответить с цитированием
Старый 13.07.2013, 18:51   #3
amico
Пользователь
 
Аватар для amico
 
Регистрация: 08.11.2009
Сообщений: 32
По умолчанию

Моя страница для входа выглядит следующим образом:
Код:
<?php
$this->pageTitle=Yii::app()->name . ' - Вход';
?>
<h1>Вход</h1>
<p>Пожалуйста, заполните следующую форму ваших учетных данных:</p>
<!-- Создать тему-->
<div class="form">
<?php echo CHtml::beginForm("index.php?r=site/vhod",'post'); ?>
<div class="row buttons">
    Логин</br>
    <?php echo Chtml::activeTextField($model,'username');?> </br>
    Пароль</br>
    <?php echo Chtml::activePasswordField($model,'password');?></br>
    <?php echo CHtml::submitButton('Ввойти'); ?>
</div>
<?php echo CHtml::endForm(); ?>
</div>
Может ли метод POST
<?php echo CHtml::beginForm("index.php?r=site/vhod",'post'); ?>
быть причиной моей ошибки? как тогда в таком случае получать данные от пользователя?
amico вне форума Ответить с цитированием
Старый 13.07.2013, 18:54   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Чего гадать – покажи полный текст ошибки.
Andkorol вне форума Ответить с цитированием
Старый 13.07.2013, 18:58   #5
amico
Пользователь
 
Аватар для amico
 
Регистрация: 08.11.2009
Сообщений: 32
По умолчанию

PHP warning

session_regenerate_id() [<a href='function.session-regenerate-id'>function.session-regenerate-id</a>]: Cannot regenerate session id - headers already sent

W:\home\forum\www\framework\web\CHt tpSession.php(185)

Код:
173     {
174         session_id($value);
175     }
176 
177     /**
178      * Updates the current session id with a newly generated one .
179      * Please refer to {@link http://php.net/session_regenerate_id} for more details.
180      * @param boolean $deleteOldSession Whether to delete the old associated session file or not.
181      * @since 1.1.8
182      */
183     public function regenerateID($deleteOldSession=false)
184     {
185         session_regenerate_id($deleteOldSession);
186     }
187 
188     /**
189      * @return string the current session name
190      */
191     public function getSessionName()
192     {
193         return session_name();
194     }
195
196 /**
197 * @param string $value the session name for the current session, must be an alphanumeric string, defaults to PHPSESSID
Stack Trace
#0
+ W:\home\forum\www\framework\web\CHt tpSession.php(185): session_regenerate_id(true)
#1
+ W:\home\forum\www\framework\web\aut h\CWebUser.php(708): CHttpSession->regenerateID(true)
#2
+ W:\home\forum\www\framework\web\aut h\CWebUser.php(227): CWebUser->changeIdentity("1", "arina", array("title" => "arina"))
#3
– W:\home\forum\www\protected\control lers\SiteController.php(156): CWebUser->login(UserIdentity)
Код:
151        // Yii::app()->user->logout();
152        $identity=new UserIdentity($username,$password);
153         if ($identity->authenticate())
154         { 
155           
156            Yii::app()->user->login($identity);
157            echo Yii::app()->user->title;
158            $this->render('index'); 
159         }
160         else { 
161             echo $identity->errorMessage;}
#4
+ W:\home\forum\www\framework\web\act ions\CInlineAction.php(49): SiteController->actionVhod()
#5
+ W:\home\forum\www\framework\web\CCo ntroller.php(308): CInlineAction->runWithParams(array("r" => "site/vhod"))
#6
+ W:\home\forum\www\framework\web\CCo ntroller.php(286): CController->runAction(CInlineAction)
#7
Код:
260         {
261             if(($parent=$this->getModule())===null)
262                 $parent=Yii::app();
263             if($parent->beforeControllerAction($this,$action))
264             {
265                 $this->runActionWithFilters($action,$this->filters());
266                 $parent->afterControllerAction($this,$action);
267             }
268         }
269         else
270             $this->missingAction($actionID);
+ W:\home\forum\www\framework\web\CCo ntroller.php(265): CController->runActionWithFilters(CInlineAction , array())
#8
+ W:\home\forum\www\framework\web\CWe bApplication.php(282): CController->run("vhod")
#9
+ W:\home\forum\www\framework\web\CWe bApplication.php(141): CWebApplication->runController("site/vhod")
#10
+ W:\home\forum\www\framework\base\CA pplication.php(172): CWebApplication->processRequest()
#11
– W:\home\forum\www\index.php(13): CApplication->run()
Код:
08 defined('YII_DEBUG') or define('YII_DEBUG',true);
09 // specify how many levels of call stack should be shown in each log message
10 defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
11 
12 require_once($yii);
13 Yii::createWebApplication($config)->run();

Последний раз редактировалось amico; 13.07.2013 в 19:05.
amico вне форума Ответить с цитированием
Старый 13.07.2013, 19:06   #6
amico
Пользователь
 
Аватар для amico
 
Регистрация: 08.11.2009
Сообщений: 32
По умолчанию

Места-ошибки выделила цветом бордо
amico вне форума Ответить с цитированием
Старый 13.07.2013, 19:29   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Где-то вывод в браузер идет – но стандартная страница ошибок Yii не очень-то полезна в этом случае.
Вот такой способ выявления места вывода в браузер предложен на форуме офф. сайта Yii.
Это позволит вывести стандартную ошибку, с указанием места вывода.
Пробуем.
Andkorol вне форума Ответить с цитированием
Старый 13.07.2013, 21:24   #8
amico
Пользователь
 
Аватар для amico
 
Регистрация: 08.11.2009
Сообщений: 32
Печаль

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Где-то вывод в браузер идет – но стандартная страница ошибок Yii не очень-то полезна в этом случае.
Вот такой способ выявления места вывода в браузер предложен на форуме офф. сайта Yii.
Это позволит вывести стандартную ошибку, с указанием места вывода.
Объясните для "особо талантливых", куда я должна вставить
PHP код:
error_reporting E_ALL ); 
      
ini_set 'display_errors' ,  '1 ' ); 
      
определен 'YII_DEBUG' )  или определить 'YII_DEBUG' истинные ); 
это кусок кода?
amico вне форума Ответить с цитированием
Старый 13.07.2013, 22:21   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

По ссылке же написано:
Цитата:
I added
PHP код:
error_reporting(E_ALL);
ini_set('display_errors''1');
defined('YII_DEBUG') or define('YII_DEBUG',true); 
to the main index.php and that revealed which file had the problem.
Andkorol вне форума Ответить с цитированием
Старый 14.07.2013, 00:12   #10
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Может кодировка utf-8 with bom?!
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка DPB Constant (user 'sysdba') is unknown artemavd БД в Delphi 3 04.06.2012 19:30
Ошибка в User.inc _PROGRAMM_ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 15.05.2011 11:51
login@domain.com;pass она должна брать сначала только "login" потом "domain.com" и на последок "pass" AquaKlaster Общие вопросы Delphi 4 05.04.2009 17:31
Поиск свободных значений в столбце IDENTITY sqlnovichok SQL, базы данных 0 07.03.2008 09:12