如何将静态导航系统更改为PHP动态导航系统?

时间:2011-12-15 11:10:18

标签: php mysql redirect navigation login-script

如何将静态导航系统更改为PHP动态导航系统,以便从其他静态网址导航到动态网址?

例如,

以下基于会话变量的登录重定向标头将经过身份验证的用户重定向到登录页面,该登录页面的ID值存储在Mysql数据库中,其中ID是主键,并且具有相应的值1.

header('Location: user.php?id=' . $_SESSION['user_id']); 

上述标题会将用户重定向到以下动态网址

www.anysite.com/anydirectory/user.php?id=1

其中有一个导航菜单,

<a herf="user.php"> User Account</a>
<a href="setting.php">User Setting</a>  
<a href="profile.php">User profile</a>
<a href="logout.php">Log Out</a>

这里是导航链接,

<a herf="user.php"> User Account</a>

本身是成功登录后已重定向到以下动态链接/页面的用户的静态登陆链接/页面,

www.anysite.com/anydirectory/user.php?id=1

现在,各个用户如何导航到该链接,

www.anysite.com/anydirectory/user.php?id=1

但不是

www.anysite.com/anydirectory/user.php

来自其他导航链接,

<a href="setting.php">User Setting</a>
<a href="profile.php">User Profile</a>

另外,我该如何更改以下静态导航链接

<a herf="user.php"> User Account</a>
<a href="setting.php">User Setting</a>  
<a href="profile.php">User profile</a>

基于会话变量的动态链接与经过身份验证的用户的相应ID值关联,以便absoulte链接看起来像,

www.anysite.com/anydirectory/user.php?id=1
www.anysite.com/anydirectory/setting.php?id=1
www.anysite.com/anydirectory/profile.php?id=1

因为所有静态链接仅与经过身份验证的用户有关?

注意:您可以在How to redirect the users to their id specific urls/landing pages after they log in?

查看登录会话

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您不应将您的身份验证基于get中设置的ID。这很容易改变或删除。

您建议您在代码中编写以下逻辑:

  1. 您已成功登录
  2. ID,密码和一些聪明的安全性内容在cookie(或会话)中设置
  3. 在每个页面加载中,检查cookie(或会话变量)是否有效
  4. 如果它们无效,则强制用户再次登录
  5. 如果它有效,则您已拥有用户ID。
  6. 如果您希望用户访问&#34;您应该只在网址中附加用户ID。另一个用户的个人资料或页面。在facebook profile.php将指向您的个人资料,而profile.php?id = 111将指向ID为111的个人资料。您不希望用户能够访问所有人的设置页面?

答案 1 :(得分:0)

我终于解决了这个问题。我在这里发布解决方案,以便它可以成为其他观众的指南。

可以通过回显/查询预定义的PHP变量来完成,例如表单变量&amp;会话变量等作为主键或唯一键的值(这里'id'默认为主键和默认唯一键)。

<a href="user.php?id=<?php echo $_SESSION['user_id']; ?>">User Account</a>
<a href="user.php?id=<?php echo $_SESSION['user_id']; ?>">User Setting</a>
<a href="user.php?id=<?php echo $_SESSION['user_id']; ?>">User Profile</a>