【发布时间】:2012-07-14 16:51:32
【问题描述】:
我已经建立了一个 PHP 登录系统,它在加载每个页面之前启动会话并检查用户是否已登录。
在我的受保护页面上,我在顶部有一个包含启动会话和是否加载页面的 if 语句。然后在底部我有另一个包含,它是重定向回登录页面的 else 语句。这在页面直接时工作正常,但是当从其他地方包含时我得到这个错误:解析错误:语法错误,意外 $end
这是代码
包括1:
<?php
session_start();
if ($_SESSION['username'])
{
?>
这是在会话存在时加载的受保护内容
包括 2 个:
<?php
}
else
header ("location: index.php");
?>
我认为这可能是由于将语句上的花括号分成两个 PHP 标记造成的,我这样做的原因是如果 if 语句为真则加载整个页面,而不是将其留在 PHP 中并回显每行 HTML 分开。
我该如何解决这个问题?还是有更好的方法来拆分 IF/ELSE 语句。
谢谢 丹尼
【问题讨论】:
-
我不相信在两个不同的文件中打开和关闭花括号时,在多个标签中拆分花括号会起作用。这样做不是更好吗:
if($_SESSION['username']) { /*include protected content*/ } -
@bluegman991 谢谢,我怎样才能在不回显每一行 HTML 的情况下包含整个受保护的页面?并且无需启动会话即可访问文件。
-
将受保护的页面放在单独的文件中(可能在受保护的目录中),然后在 if 语句中包含受保护的文件。
-
@bluegman991 这样做的唯一问题是登录系统被用于预订系统,因此包含将出现在许多页面中,而不仅仅是一个需要保护的文件。
标签: php session include if-statement