【发布时间】:2013-04-11 10:25:52
【问题描述】:
我正在尝试在用户登录后更改菜单中的链接。这意味着显示的是“我的页面”,而不是“登录”。现在,用户可以登录和注销。然而,用户登录后名称/链接不会直接更改。
我的菜单代码:(我在所有网站上都使用 include('menu.php'。为了代码的灵活性)
<div id="menu">
<ul>
<li><a href="index.php">Home</a></li>
<li><?php echo $mypage?></li>
<li><a href="community.html">Community</a></li>
<li><a href="media.html">Media</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
我的 config.php 代码:
<?php
session_start();
$mypage;
if(isset($_SESSION['name'])) {
$mypage = '<a href="mypage.php">My Page</a>';
}
else {
$mypage = '<a href="login.php">Log In</a>';
}
?>
只有当用户点击另一个菜单时,$mypage 变量才会更新。我尝试使用 header() 函数刷新页面。但这只会导致重定向循环。
如果有人可以帮助我,那就太好了。
编辑
清理一些事情:
为了更好地了解网站: http://www.askmephilosophy.camilstaps.nl/ (到目前为止,唯一可以查看的是“欢迎”和“登录”。登录后,您将被重定向到 mypage.php 站点。(也可以通过在名称后键入它来访问. */mypage.php)
【问题讨论】:
-
您是在包含
config.php之前还是之后处理登录?执行顺序可能是错误的。 -
您的登录脚本是如何工作的?如果它设置会话而不刷新,则页面上很可能不会发生任何事情。这就像打开您的浏览器 cookie 并将会话 cookie
name设置为某事。每次都需要刷新。 -
你能说明你是如何包含这些文件的吗?
-
在我的 login.php 中,我使用: 在这个 session.php 脚本中,密码被散列,检查数据库中的密码,一旦没问题: if( $hash == $r['Password'] ) { $_SESSION['name'] = $用户名; }