【问题标题】:How to change a static navigation system to a PHP dynamic navigation system?如何将静态导航系统更改为 PHP 动态导航系统?
【发布时间】:2011-12-15 11:10:17
【问题描述】:

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

例如,

以下基于会话变量的登录重定向标头将经过身份验证的用户重定向到登录页面,该页面使用存储在 Mysql 数据库中的 ID 值链接,其中 ID 是主键,对应的值为 1。

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

上面的header将用户重定向到下面的动态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

因为所有静态链接都只针对经过身份验证的用户?

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

提前感谢您的帮助。

【问题讨论】:

    标签: php mysql redirect navigation login-script


    【解决方案1】:

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

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

    1. 您登录成功
    2. 在 cookie(或会话)中设置 ID、密码和一些巧妙的安全性内容
    3. 在每次页面加载时检查 cookie(或会话变量)是否有效
    4. 如果它们无效,则强制用户重新登录
    5. 如果有效,则说明您已经拥有用户 ID。

    如果您希望用户“访问”另一个用户的个人资料或页面,您应该只在 url 中附加一个用户 ID。在 facebook profile.php 将指向您的个人资料,而 profile.php?id=111 将指向 id 为 111 的个人资料。您不希望用户能够访问每个人的设置页面吗?

    【讨论】:

    • 好吧,看看你的另一个问题,你有一个会话和一个具有相同 user_id 的 cookie
    • 嗯,身份验证过程不仅仅基于 id 会话。该过程涉及几个基于会话和 cookie 的安全措施。现有流程可以将用户 ID 存储在数据库中,但我想在 url 中附加基于主键(在本例中为 id)的键值对,以便各个用户可以为链接添加书签,如果他们觉得有必要的话他们可以通过特定的登录页面登录。
    • 他们仍然可以为链接添加书签。这就是真正动态页面的制作方式。
    • 当动态 url 没有任何特定的查询字符串和值时怎么办?
    • 好吧,想象一下。用户为他的设置页面 settings.php?id=20 添加了书签。他注销,另一个用户接管了计算机。如果他登录并点击书签,他会得到一个错误,因为他不是 id=20。我再说一遍,不要在 GET 中使用 id 来选择 userID,使用 session 和 cookie-variables。
    【解决方案2】:

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

    可以通过在herf 标签。

    <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>
    

    【讨论】:

      猜你喜欢
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多