0

我现在正在使用身份验证脚本为我的入门 PHP 类做作业。它只需要检查是否设置了 $_SESSION,但是当我将代码植入文件中时,页面只是保持白色。

<?php
if (isset($_SESSION['loggedin']) {
echo "<span><a href='http://xxx/php/insert.php' target='_blank'>Add    Item</a></span>
<span><a href='http://xxx/php/update.php' target='_BLANK'>Update Menu</a></span>"; }
else {
echo "<span><a href='xxx/php/login.php' target='_blank'>Add   Item</a></span>";
}
?> 

删除代码后,它工作得非常好 - 当然没有应该显示的所需 div

4

4 回答 4

1

这意味着您的会话尚未设置。使用session_start()页面顶部的功能

于 2012-04-26T04:26:15.200 回答
1

您有语法错误。您的if陈述缺少一个右括号。

在开发过程中,您应该始终关注 php 错误日志。当它没有直接告诉你哪里出了问题时,它会给你一个强烈的暗示。在这种情况下,您会得到一个解析错误和一个行号,并且很明显出了什么问题。

于 2012-04-26T04:26:16.370 回答
0

为了可读性,跳入和跳出 PHP 通常比使用echo大量 HTML 更好。

<?php if (isset($_SESSION['loggedin']): ?>
    <span><a href='http://xxx/php/insert.php' target='_blank'>Add Item</a></span>
    <span><a href='http://xxx/php/update.php' target='_blank'>Update Menu</a></span>
<?php else: ?>
    <span><a href='xxx/php/login.php' target='_blank'>Add Item</a></span>
<?php endif; ?>

if():请注意、else:和的替代语法endif;。它有助于避免语法错误,并且大多数 IDE 都对混合内容提供了良好的支持。此外,您可以为您的标记属性使用双引号,这虽然只是风格,但通常是首选。

就会话管理而言,session_start()就像其他人提到的那样,您应该在每个请求的开头附近的某个地方。

于 2012-04-26T04:36:52.107 回答
0

请先session_start()在页面顶部检查。然后

<?php
  if (isset($_SESSION['loggedin']) && !empty($_SESSION['loggedin'])) {
    echo "<span><a href='http://xxx/php/insert.php' target='_blank'>Add    Item</a></span>
     <span><a href='http://xxx/php/update.php' target='_BLANK'>Update Menu</a></span>"; }
  else {
        echo "<span><a href='xxx/php/login.php' target='_blank'>Add   Item</a></span>";
     }
   ?> 

谢谢

于 2012-04-26T05:36:27.547 回答