【问题标题】:URL Rewriting with MySQL database [duplicate]使用 MySQL 数据库重写 URL [重复]
【发布时间】:2012-07-12 08:48:43
【问题描述】:

可能重复:
.htaccess url rewriting with php

我网站上的主页列出了许多用户。每个用户都有“查看个人资料”链接,可将您带到www.mysite.com/user-profiles/profile.php?id=32id 与用户相关。

是否可以使用 URL 重写来在数据库中查找该 ID 的用户的姓名和姓氏,并将其重写为类似的东西?

www.mysite.com/user-profiles/john-a-doe

任何帮助将不胜感激...

【问题讨论】:

  • 当然可以,但请注意使用表中的唯一(组合)字段。例如,当您有 2 个成员时,名称是 John a Doe,您就有问题了。是否有一个独特的领域可用?在这种情况下,我相信我们可以为您提供帮助。
  • 最简单的方法是在脚本顶部检查 $_GET['name'] 然后获取 id 参数并设置 $_GET['id']=$user[ 'ID'];所以其余的将正常工作。但正如 Ronn0 所说,名称可能会重复,最好添加一些额外的安全性,比如 id 的 md5。

标签: php mysql .htaccess


【解决方案1】:

我建议这样做

以以下格式打印 URL mysite.com/user-profiles/(ID)/(NAME) 然后使用它来重写:

RewriteRule ^user-profiles/([^/]*)/([^/]*)$ /user-profiles/profile.php?id=$1&name=$2 [L]

然后在你的profile.php SELECT 中为idname

注意:有几种方法可以实现您想要的,但由于您使用全名(NAME),当两个(或更多)用户具有相同名称时,这会导致问题(由 Ronn0 指出),我的建议可以消除这个问题。

【讨论】:

  • 虽然名称不是必需的,因为 ID 是从数据库中获取用户所需的全部内容,但它确实阻止人们更改 url 中的 id 以查看其他人的详细信息
  • @Waygood 您的服务器端身份验证应该阻止这种情况。 URL 不应该决定我是否能够查看页面,如果是这样,我可以坐下来猜测 URL。
  • 仅当有任何服务器端身份验证时。
  • 我同意@DaveRandom,这就是为什么同时做这两件事很重要的原因,URL 唯一性(检查nameid)和授权检查(不只是顺便验证)以检查是否用户有权查看该个人资料(或任何页面)
  • 我同意你们俩的观点,但我是说不要假设已经有任何安全措施。我曾在主要系统(我没有创建)上工作过,甚至没有考虑过身份验证。当他们持有个人 pdf 的护照等......和工资单时很棒。
猜你喜欢
  • 1970-01-01
  • 2015-07-31
  • 2015-07-26
  • 1970-01-01
  • 2014-07-14
  • 2012-10-09
  • 2012-04-02
  • 2017-01-26
  • 1970-01-01
相关资源
最近更新 更多