-1

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

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

请注意,<!this 用作模板开始的 DW 的标志,因此我必须在会话开始之前拥有此权限。

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

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

请指教。

4

2 回答 2

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 标记。它可以防止在包含的文件之后无意包含空白。


于 2013-08-09T19:58:26.023 回答
0

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

这也是为什么最好不要用标签结束 php 文件的原因 ?> 所以不要意外创建空白输出。

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

于 2013-08-09T19:43:57.960 回答