警告:Session_start()+无法修改标题信息

时间:2013-08-09 19:37:49

标签: php

在本地,我没有任何问题 - 但在客户端计算机上出现这些警告。鉴于此,我将会话开始放在文件的开头 - 看起来像这样:

<!<?php session_start();
if(!isset($_SESSION["loggedin"])) 

注意<!这被用作模板开始的DW标志,所以我必须在会话开始之前做好这一点。

因此,有没有办法解决此问题并停止这些警告。或者它是更深层次的东西,就像我正在处理cookie /会话的方式。我将上面的代码放在受保护的每个页面的开头。但是,一旦用户登录,我按如下方式设置$ _SESSION。

   session_start();
    $_SESSION['user'] = $user;
    $_SESSION['password'] = $password;
    $_SESSION['loggedin'] = "true";
    header("location:index.php"); //redirect to main page

请告知。

2 个答案:

答案 0 :(得分:1)

<!<?php session_start();不正确,因为<!在PHP标头之前计为输出。

<!<?php session_start();
if(!isset($_SESSION["loggedin"]))

读作:( 正确

<?php session_start();
if(!isset($_SESSION["loggedin"]))


不正确

(space)<?php session_start();
if(!isset($_SESSION["loggedin"]))

不正确:

(space)
(space)<?php session_start();
if(!isset($_SESSION["loggedin"]))

不正确:

(HTML)<?php session_start();
if(!isset($_SESSION["loggedin"]))

脚注:出于这个原因,最好不要在类文件上关闭关闭的php标记。它可以防止在包含文件后无意中包含空格。


答案 1 :(得分:0)

我不确定为什么DW会要求你将字符放在php文件的开头。如果在调用session_start()之前创建了输出(包括空格),则php会抱怨已经发送了标题。换句话说,在session_start调用之前,你不能在php标签之外键入任何内容,并且你不能在session_start之前进行echo / print调用。

这也是为什么不使用标签结束php文件的好习惯?&gt;所以不要意外地创建空白输出。

如果本地DW以某种方式剥离这些标记,您可以验证客户端计算机上没有发生这种情况,因为您会看到