在本地,我没有任何问题 - 但在客户端计算机上出现这些警告。鉴于此,我将会话开始放在文件的开头 - 看起来像这样:
<!<?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
请告知。
答案 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以某种方式剥离这些标记,您可以验证客户端计算机上没有发生这种情况,因为您会看到