-2

可能重复:
PHP 已发送的标头

我不知道,但不久前,重定向功能正在工作。但现在它给了我这个错误:

 Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\NewFolder\app\webroot\relationship1\app\controllers\books_controller.php:114) [CORE\cake\libs\controller\controller.php, line 744]

这是我的控制器:C:\xampp\htdocs\NewFolder\app\webroot\trial\app\controllers\users_controller.php

<?php
    class UsersController extends AppController{

        function register(){
            if(!empty($this->data)){
                if($this->User->save($this->data)){
                    $this->Session->setFlash('Data saved');
                    $this->redirect(array('action'=>'index'));
                } else{
                    $this->Session->setFlash('Could not save data');
                }
            } else{

                $this->Session->setFlash('Please fill this form');
            }
        }

        function index(){
            $users = $this->User->find('all');
            $this->set('users',$users);
        }

        function login(){
        //$this->Session->write('user','chams');
            //pr($this->Session->read());
            if(!empty($this->data)){
                //pr($this->data['User']['username']);
                $username = $this->data['User']['username'];
                //if($this->User->read(NULL,$username)){
                //$condition = array('User.username'=>$username);
                if($this->User->findByUserName($username)){
                    pr('existing');
                    $data = $this->User->find('first',$username);
                    $this->set('data',$data);
                    if($this->redirect(array('action'=>'main'))){
                        $this->Session->setFlash('redirected to index');
                    }

                } else{
                    pr('non existing');
                }

            }
        }
    }
?>
4

3 回答 3

0

我假设$this->set('data',$data);填充模板,尝试删除它。您尝试重定向用户,因此无论如何它都是多余的。

于 2012-05-04T08:18:45.770 回答
0

在您的登录中,您写

$this->set('data', $data);

在重定向之前,它已经发送了一个标头输出。您应该修改登录方法:

.......    
if($this->User->findByUserName($username)){
   pr('existing'); // remove this
   $data = $this->User->find('first',$username);           
   if($this->redirect(array('action'=>'main'))){
      $this->Session->setFlash('redirected to index');
   }

   } else {
        pr('non existing');
   }
    $this->set('data',$data);
    .....
于 2012-05-04T08:20:19.277 回答
0
<?php ob_start(); ?>

将此代码放入您的 ctp

于 2012-05-04T08:20:31.087 回答