PHP标题/会话问题

问题描述:

稍长的问题。我最近把我的开发站点移到了一个Web服务器上进行进一步测试..在移动之前它完美地工作了100%。大多数功能正在工作,除了涉及标题的任何东西..PHP标题/会话问题

我已经添加了ob_start/flush到我使用标题的所有地方..我检查了我在所有页面开始时调用了session_start(除非设置了)。与很多公司的

things :/ But I get 1000 errors. 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/sites/p/******/public_html/index.php:3) in /var/sites/p/*******/public_html/index.php on line 4 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/sites/p/party******/public_html/index.php:3) in /var/sites/p/*******/public_html/index.php on line 4 
Debug active 

而且我的index.php发挥各地(我已经想尽办法)=

<!DOCTYPE html> 
<html lang="en"> 
<?php if (!isset($_SESSION)) { 
    session_start(); 
    } 
    ?> 
<?php include ('lan-config.php')?> 
<?php include (ABSPATH. 'lan-header.php') ?> 
<?php 
    ?> 
    <body> 

我查看会话是否甚至开始,什么都没发生。更不用说我的登录脚本工作,并设置所有的$ _Session变量,然后刷新它们消失。

任何想法?我查了一下我的头/配置被发送,我甚至不使用“头位置”斗大新

:)

随着错误消息告诉您,已经有的调用之前的输出session_start。由于此功能修改标题信息,因此您无法在之前进行任何输出。看看this awesome answer了解原因。

因此,改变这种:

<!DOCTYPE html> 
<html lang="en"> 
<?php if (!isset($_SESSION)) { 
    session_start(); 
    } 
    ?> 
<?php include ('lan-config.php')?> 
<?php include (ABSPATH. 'lan-header.php') ?> 
<?php 
    ?> 
    <body> 

对此

<?php 
if (!isset($_SESSION)) { 
    session_start(); 
    } 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<?php include ('lan-config.php')?> 
<?php include (ABSPATH. 'lan-header.php') ?> 
<?php 
    ?> 
    <body> 

也许你会需要包括前DOCTYPE HTML标签太lan-config.phplan-header.php,这取决于你在这些文件做什么。

+0

像老板,最后一个问题。任何想法为什么会议不通过网页?例如。我的登录脚本..记录我(100%给我输出并存储会话中的所有内容),然后我回到主页并且会话有“未设置” –

+0

每个页面必须有一个session_start才能执行$ _SESSION var,页面不会运行session_start,那么$ _SESSION变量不会被设置。因此你需要调用session_start();每次使用$ _SESSION var。为什么不可能通过页面?例如有一场比赛,一辆赛车已经开始运行,而游戏尚未开始,如果已经有一辆赛车正在运行,游戏如何开始? – daison12006013

+0

是的,你不应该'if(!isset($ _ SESSION)){'test。 'session_start'不仅创建一个新的会话,它也恢复了现有的会话。 – OlivierH