无法修复'session.php第1024行 - 无法编辑标题信息'

时间:2013-10-03 15:49:51

标签: php session header

我收到了这些错误:

[phpBB Debug] PHP Warning: in file [ROOT]/includes/session.php on line 1042: Cannot modify header information - headers already sent by (output started at /home4/ink/public_html/testpage.php:3)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/session.php on line 1042: Cannot modify header information - headers already sent by (output started at /home4/ink/public_html/testpage.php:3)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/session.php on line 1042: Cannot modify header information - headers already sent by (output started at /home4/ink/public_html/testpage.php:3)

我搜索了以下解决方案: - 使用非UTF文件格式 - 使用标题(位置'www.example.com') - 清除php标记之前或之后的空格 - 将php会话从所有文件的开头和其他区域开始

我正在尝试提供一个登录区域,利用phpBB数据库提供用户名和密码。访问论坛后,以下代码可以正常工作,但在此之前,它会吐出上述错误。

这是代码。

<?php   
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

$user->session_begin();
$auth->acl($user->data);
$user->setup(); 
if($user->data['is_registered'])
{

    echo "Hello " . $user->data['username']; //User is already logged in

    echo "<br /> Last visit: " . $user->format_date($user->data['session_last_visit']);

}

else
{

    echo '<form method="POST" action="./forum/ucp.php?mode=login">
    <p>Username: <input type="text" name="username" size="40"><br />
    Password: <input type="password" name="password" size="40"><br />
    Remember Me?: <input type="checkbox" name="autologin"><br /><br /><br />
    <input type="submit" value="Submit" name="login"></p>
    </form>';
}?>

<?php define('IN_PHPBB', true); $phpbb_root_path = './forum/'; $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path . 'common.' . $phpEx); $user->session_begin(); $auth->acl($user->data); $user->setup(); if($user->data['is_registered']) { echo "Hello " . $user->data['username']; //User is already logged in echo "<br /> Last visit: " . $user->format_date($user->data['session_last_visit']); } else { echo '<form method="POST" action="./forum/ucp.php?mode=login"> <p>Username: <input type="text" name="username" size="40"><br /> Password: <input type="password" name="password" size="40"><br /> Remember Me?: <input type="checkbox" name="autologin"><br /><br /><br /> <input type="submit" value="Submit" name="login"></p> </form>'; }?>

此代码用于网站的菜单区域。上面的代码可以在include中找到,它可以在整个站点中使用。

从我的搜索中找出答案,我觉得解决方案将涉及在调用网站的其余部分之前将部分代码放在文件中,以便会话可以先于其他任何内容启动。如果是这样,我会对如何解决这个问题有所了解,如果没有,那么那就是我无法解决这个问题的原因!

我查看了这个错误的所有堆栈溢出问题,我找不到任何一个可行的解决方案。 phpBB的文档也没有帮助指定有关此标题问题的更多信息。

如果需要更多信息,请离开!

2 个答案:

答案 0 :(得分:0)

这是session问题

您需要在文件顶部启动会话..

<?php
    session_start();
    // then your code

答案 1 :(得分:0)

Cookie在HTTP页面传输的标头中发送。一旦你提供了一些输出,就不能再修改它们了。

缓冲您的输出使用ob_start();在页面的<到页面