PHP if else echo

3

我有一个关于代码的问题。我的代码如下:

<?php include "../config.php"; ?>
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Title</title>
<link rel="stylesheet" href="../style.css" type="text/css" />
</head> 
<? if (!empty($_SESSION['LoggedIn'])) { ?>
    <div class="row">
        <div class="span2">
            <p><h3>Welcome <?=$_SESSION['login']?> loggedin: <?=$_SESSION['LoggedIn']?></h3> </p>
        </div>
    </div>
    <br>
    <div class="row">
        <div class="span2">     
            <h1>Menu</h1>

        </div>
        <div class="span5">   
            <h2>Header1:</h2>
        </div>
    </div>

  <?
    } else {
  ?>  
          <h1>Error</h1>
  <?         
    }
  ?>
</div>
</body>
</html> 

结果如下:
Welcome admin loggedin: 1

Menu
Header1:
Error

为什么会出现错误?

我在哪里犯了错?我认为所有的括号都是正确的。也许问题出在我的本地主机上?或者我不知道。你能给我建议吗?


5
看一下你的源代码。我认为你会发现PHP仍然在其中。你是否设置了你的Web服务器来解析PHP文件? - Johan
1
请发布浏览器的完整源输出。<? ... ?> 是否被解析? - str
1
你最近在最后三个 PHP 代码块中似乎使用了短标签 <? 而不是 <?php。请检查 PHP 是否配置为使用短标签,或者避免使用它们。 - shanethehat
只有启用了 PHP,它才会解析代码,否则我们将得到许多 PHP 标签,而不是 OP 发布的结果。@Johan - R R
1
我相信,PHP实际上正在被评估。这就是从$_SESSION中检索值的方式。在我看来,问题出在其他地方;OP没有在这里放入整个代码。 - UltraInstinct
显示剩余3条评论
2个回答

8
我最好的猜测是您已禁用短标签。确保启用短标签(<?而不是<?php)。或者更好的方法是不要使用它们! 将所有<?替换为<?php,完整的标记名称将确保PHP被正确解析。
无论启用还是禁用短标记,<?=仍将被评估和解析。
查看页面源代码,看看是否可以看到PHP代码,如果可以,则服务器未解析短标签。

10
PHP正在解析,登录名已被打印。 - shanethehat
@shanethehat:没错。我已经纠正了。谢谢。这是我的疏忽 :D - Madara's Ghost
1
如果没有启用短标签,她只会在开头处出现错误。我认为短标签不是问题。 - R R
2
@RishabhRaj:为什么?如果短标签没有被解析,if/else序列将会失败。<? !== <?= - Madara's Ghost
作为参考,自 PHP 5.4 起,<?= 将被评估,无论short_open_tag如何设置。 - str
显示剩余5条评论

0

将您的页面保存为 .php 扩展名


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接