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


How to change a static navigation system to a PHP dynamic navigation system?

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

例如

下面基于会话变量的登录重定向头将认证的用户重定向到与存储在Mysql数据库中的ID值链接的着陆页面,其中ID是主键,对应的值为1。

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

上面的标题将用户重定向到以下动态url

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值相关联,因此绝对链接看起来像,

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

因为所有的静态链接都是关于一个经过身份验证的用户?

注意:你可以检查登录会话如何重定向用户到他们的id特定的url/登陆页面后,他们登录?

提前感谢您的帮助。

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

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

  1. 您已成功登录
  2. Id,密码和一些聪明的安全东西设置在cookie(或会话)
  3. 在每次页面加载时检查cookie(或会话变量)是否有效
  4. 如果无效,强制用户重新登录
  5. 如果它是有效的,你已经有用户id。

如果你想让用户"访问"另一个用户的个人资料或页面,你应该只在url中添加一个用户id。在facebook profile.php将指向您的个人资料,而profile.php?Id =111将指向Id为111的配置文件。你不希望用户能够访问每个人的设置页面?

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

可以通过回显/查询预定义的PHP变量来完成,例如form变量&作为herf标签内的主键或唯一键的值(这里'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>