1

登录后,我试图根据用户角色将用户重定向到他们指定的页面。我尝试了重定向和标头,但两者都不适用于服务器中的我。

我试过了,

$this->redirect('dashboard/profile');  
$this->redirect(array('dashboard/profile'));  
header('Location: dashboard/profile');

我收到此错误

Cannot modify header information - headers already sent by (output started at /home/deheal/public_html/dev/index.php:2) 

这一切都在本地完美运行,但在服务器中却没有,请帮助我。

提前致谢。

4

4 回答 4

0

我之前也有同样的问题。它在我的控制器上显示标题错误。

复制控制器中的所有代码,创建新文件,粘贴代码并以相同的名称保存。

它必须有帮助。

于 2014-06-18T10:20:59.423 回答
0

如果你想在页面中间的某个地方使用重定向,你需要确保在重定向之前没有输出到浏览器。您可以使用 ob_start() 函数在将输出发送到浏览器之前对其进行缓冲,以便在执行重定向之前不发送标头

ob_start() .....starts buffering the output
ob_flush()......flushes out the output that was buffered
于 2013-09-09T06:48:16.400 回答
0

使用/URL

$this->redirect('/dashboard/profile');  

header()一旦文本输出到浏览器,您将无法使用。由于您的header.php包含可能输出 HTML,因此无法使用 header()。

您可以通过以下几种方式解决此问题:

移动if statement上面的标题包含(这不起作用,正如您在header.php设置 theuid session和 other的评论中指出的那样vital stuff)。在脚本顶部调用ob_start()以缓冲输出。

根据您更新的问题,您可以使用window.location而不是header("location:URL")

<?php 
//Php code here
?>
      <script type="text/javascript">
       window.location= 'dashboard/profile';
        </script>
<?php 
//Php code here
?>
于 2013-09-09T06:12:10.530 回答
0

您可以通过javascript执行重定向,因为您无法在渲染后修改标头。但是这个函数可以做到这一点。只需调用它,您将被重定向到您想要的页面。

<?php
function redirect_url($url)
{
?>
<script>
document.title="Loading";
document.getElementsByTagName("body")[0].innerHTML="Please Wait.....";
document.getElementsByTagName("body")[0].innerHTML+='<img src="../../images/loading_2.gif" style="height:20px;width:20px;"/>';
window.location.href="<?php
echo $url;
?>";
</script>
<?php
}
?>
于 2013-09-09T15:55:27.790 回答