【问题标题】:PHP/MySQL: Storing item idsPHP/MySQL:存储项目 ID
【发布时间】:2012-08-06 09:07:31
【问题描述】:

当我将一些项目存储在一个表中,然后希望有一个链接到每个项目的 URL 时,我只有 mywebsite.com/item/132 之类的东西 这将显示有关项目表中第 132 个项目的信息。拥有这样的环境是不是很糟糕?我应该让它有像 youtube 这样的东西,每个项目都有一组随机的字符吗?这样做的最好方法是什么?

只需将项目按通常的数字存储在表格中,然后 URL 看起来更像这样?mywebsite.com/item/a19kgjy

然后一个 PHP 脚本“解密”a19kgjy 并获取一个用于从数据库中获取正确项目的数字?

这会让一切变慢吗?

【问题讨论】:

  • 它会变慢。链接“mywebsite.com/item/132”就足够了......
  • @Oskwish 你指的这些项目是什么?
  • @itsols 产品、东西、视频等等。这只是一个例子:P

标签: php mysql url


【解决方案1】:

这很糟糕,因为您正在为服务器添加额外的工作来进行排序。为什么不创建一个这样的表?

CREATE TABLE myTable
(
    ID int AUTO_INCREMENT,
    httpLink varchar(max)
)

在这种情况下,您只会对ID进行排序

【讨论】:

  • 好的,但是只是用 AUTO_INC (ofc ;) 存储 ID,然后有只包含 ID 的 URL?
  • 保持简单 - 第一个建议。不要在您的问题中添加您在我的问题中的那些哈希值。我建议使用这种简单的表格(当然,如果需要,还可以添加其他字段),如果您不喜欢链接中的 ID 或者您想要“对 seo 友好”,您可以使用“slug”字段(varchar 类型)。然后在填充新项目时,生成 slug,保存它,然后你可以在 url 中使用它们。看起来更好 - 也许,这在逻辑上与在 URL 中有 ID 有什么不同 - 不 :) 选择你最喜欢的,但不要增加额外的复杂性 :)
【解决方案2】:

我认为这与安全/数据保护问题更相关。这实际上取决于您是否希望其他人可以轻松访问它。有时数字非常敏感,最好使用散列键,例如,让我们说 transaction_id 或 user_id,您向其他人公开您的业务一天有多少交易或您的系统有多少用户,这可能间接导致到一些脆弱性。但是如果你想实现哈希方法,我建议你在数据插入期间生成随机哈希,而不是在查询期间使用解密方法。这将为您节省一些处理能力。但请记住为表的哈希字段编制索引。无论如何,无论是数字还是哈希都不是真正适合搜索引擎的网址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多