在嵌套if块中排除“解析错误:语法错误,意外T_ELSE”故障

时间:2011-05-23 02:00:02

标签: php if-statement

我的网站上有以下代码:

<?php
$loggedout = $_GET["loggedout"];
if ($loggedout=="true") { 
echo '<body class="slider-header" onload="Modalbox.show(\'/data/loggedout\',{width: 576, title: \'Logged Out\'}); return false;">'; else { 
if (isset($_COOKIE["hide"]))
  echo '<body class="slider-header">';
else
  echo '<body class="slider-header" onload="Modalbox.show(\'/data/surveyinvite\',{width: 576, title: \'Website Survey\'}); return false;">';
}; ?>

这应该做的是确定$loggedout是否等于true,如果是,则显示/data/loggedout。如果$loggedout不正确(或不存在),则应继续确定Cookie hide是否存在。如果cookie确实存在,则不应该onload,如果cookie不存在,则应显示/data/surveyinvite

但是,在访问我的页面时出现以下错误:

  

解析错误:语法错误,意外   T_ELSE in   /home/briefs/public_html/index.php on   第16行

第16行

echo '<body class="slider-header" onload="Modalbox.show(\'/data/loggedout\',{width: 576, title: \'Logged Out\'}); return false;">'; else { 

我已经确定问题出在以下某处(如果我摆脱它,$loggedout按预期工作):

if (isset($_COOKIE["hide"]))
  echo '<body class="slider-header">';
else
  echo '<body class="slider-header" onload="Modalbox.show(\'/data/surveyinvite\',{width: 576, title: \'Website Survey\'}); return false;">';
}; 

此代码中的问题在哪里?

2 个答案:

答案 0 :(得分:5)

如果你正确地缩进你的代码并且总是使用括号(我知道它们不是必需的;无论如何都要这样做,因为它可以防止像这样的愚蠢错误)然后你会发现它更容易没有犯这么简单的错误。你错过了几个大括号,这就是全部。

<?php
$loggedout = $_GET["loggedout"];
if ($loggedout=="true") { 
    echo '<body class="slider-header" onload="Modalbox.show(\'/data/loggedout\',{width: 576, title: \'Logged Out\'}); return false;">'; 
} else { 
    if (isset($_COOKIE["hide"])) {
        echo '<body class="slider-header">';
    } else {
        echo '<body class="slider-header" onload="Modalbox.show(\'/data/surveyinvite\',{width: 576, title: \'Website Survey\'}); return false;">';
    }
}
?>

答案 1 :(得分:1)

您缺少一些大括号“{”和“}”应为:

<?php
$loggedout = $_GET["loggedout"];
if ($loggedout=="true") { 
echo '<body class="slider-header" onload="Modalbox.show(\'/data/loggedout\',{width: 576, title: \'Logged Out\'}); return false;">'; else { 
if (isset($_COOKIE["hide"])) { # <-- here
  echo '<body class="slider-header">';
  }   else { # <-- here
   echo '<body class="slider-header" onload="Modalbox.show(\'/data/surveyinvite\',{width: 576, title: \'Website Survey\'}); return false;">';
  } # <-- and here
}; ?>