在两个php标记之间拆分IF/ELSE语句,会出现Parse错误:语法错误,意外的$end


Splitting IF/ELSE statement between two php tags, gives Parse error: syntax error, unexpected $end

我已经构建了一个PHP登录系统,它在加载每个页面之前启动会话,并检查用户是否登录。

在我的受保护页面上,我在顶部有一个启动会话的include,以及关于是否加载页面的if语句。然后在底部我有另一个include,它是重定向回登录页面的else语句。当直接在页面中时,这很好,但当从其他地方包含时,我会收到以下错误:解析错误:语法错误,意外的$end

这是代码

包括1:

<?php
session_start();
if ($_SESSION['username'])
{
?>

这是受保护的内容,如果会话存在,就会加载

包括2:

<?php
}
else
header ("location: index.php");
?>

我认为这可能是由于将语句上的大括号拆分为两个PHP标记造成的,我之所以这样做是为了在if语句为true的情况下加载整个页面,而不是将其留在PHP中并单独回显HTML的每一行。

我该如何解决此问题?或者有没有更好的方法来拆分IF/ELSE语句。

谢谢Danny

当前无法在文件之间打开和关闭大括号。如果您尝试这样做,将导致"意外的$end"语法错误。

我不确定你到底在拍什么,但根据你的评论,你应该做以下事情。

您应该有一个文件,您可以将其命名为任何名称,但我只将其称为"allProtectedContent.php"

您说过需要保护多个文件(我认为您的意思是:如果会话存在,则需要执行多个php文件)。因此,在allProtectedContent.php中,您可以包含所有要执行/输出的文件文件。

然后在你的主文件中,你应该有这样的:

<?php
if(isset($_SESSION['username']))
{
    include 'allProtectedContent.php';
}
else
{
    header('Location: index.php');
}
?>

因此,只有在设置了$_SESSION中的用户名密钥的情况下,您在allProtectedContent.php中输入的任何内容才会被执行/输出。

allProtectedContent.php示例:

<?php
// verify session
// echo some stuff
// include more files
// execute some functions
// run any php code you want
?>

仔细检查HTML,并在您想要/>的地方查找键入错误的?>

您可以尝试使用冒号表示法,而不是使用大括号,如下所示。

<?php
session_start();
if ($_SESSION['username']):
?>
...
<?php else: header("location: index.php"); endif;