Cakephp重定向无效

时间:2012-05-04 08:15:44

标签: php cakephp redirect

  

可能重复:
  Headers already sent by 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');
                }

            }
        }
    }
?>

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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);
    .....

答案 2 :(得分:0)

<?php ob_start(); ?>

将此代码放入您的ctp