PHP - 身份验证


PHP - Authentifaction

我现在正在为我的入门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

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

您有语法错误。您的if语句周围缺少一个右括号。

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

请检查页面顶部的第一个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>";
     }
   ?> 

谢谢

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

<?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()每个请求的开头。