如果我只使用一次,这个说法可以正常工作,但是当我需要多次使用时,这个说法不行。我很好奇为什么,但更重要的是我想知道如何解决这个问题。
<?php if (isset($_SESSION['SESS_USER_ID'])) { ?>
<?php }
else {?>
<?php }
我需要更改页面上的几个项目,具体取决于用户是否已登录(菜单项,给用户的消息等)
答案 0 :(得分:1)
快速解决这个问题:
<?php $logged_in = (isset($_SESSION['SESS_USER_ID'])); ?>
然后
<?php if ($logged_in) : ?>
//show secret stuff
<?php else : ?>
// show public stuff
<?php endif; ?>
BUT
第一次访问$_SESSION
和第二次访问时出现问题。您不小心将其设置在某处(使用=
而不是==
是一种简单的方法),或者您的代码具有在幕后更改它的副作用。
答案 1 :(得分:1)
要完成你想要的,你不应该在同一个文件中混合使用PHP和HTML代码。
目前大多数框架都使用某种模板。如果用户已登录,则显示登录模板。如果不是,请展示其他模板。
有许多免费提供的模板框架,例如Smarty和TWIG(仅供Symfony使用)。
如果您不想使用这些,您应该考虑将代码拆分为不同的文件,仍然是这样的:
<html>
[...]
<body>
[...]
<?php
if (isset($_SESSION["SESS_USER_ID"])) {
include("restricted_folder/file_i_want_my_logged_in_user_to_see.php");
} else {
include("login_required.php");
}
?>
[...]
</body>
</html>
请记住让“restricted_folder”无法供用户直接访问,要么删除访问权限(chmod'ing文件夹应该这样做),要么编写.htaccess禁止访问该文件夹。