我现在正在为我的入门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()
每个请求的开头。