【问题标题】:PHP: reverse able unique hashPHP:反向唯一哈希
【发布时间】:2012-02-09 19:18:10
【问题描述】:

我正在用 PHP 构建一个浏览器(浏览器中的浏览器(:只是为了好玩),我遇到了一个主要问题。我需要将 URL 缩短为更短的(编码),可以反向。

例如,现在我这样处理页面:

site.com/stackoverflow.com/questions/9217271/php-reverse-able-unique-hash

那太长了,我正在寻找类似的东西:

site.com/sftDblt

哪些“sftDblt”可以反转到“stackoverflow.com/questions/9217271/php-reverse-able-unique-hash”

有什么你知道的可以提供帮助的吗?

【问题讨论】:

  • 执行此操作的常用方法是将哈希和生成的 URL 存储在数据库表中。然后您可以从那里查找内容
  • 只需生成唯一代码并将其作为主键存储在数据库中,与完整的 url 关联。
  • @Pekka 用户每天访问 500 个页面 * 10k 用户 = 每天 500 万行。就没有别的办法了吗?
  • @MorSela,让我们备份一下。为什么需要在单个应用程序中存储多个用户的 URL?
  • 正如其他人所说,您只能使用数据库并编码具有完整 URL 的行的 ID 来执行此操作。否则,您正在寻找的是令人难以置信的压缩。

标签: php hash unique urlencode


【解决方案1】:

为什么不为钥匙启动一个计数器呢?跟踪数据库中的 url 和计数器。

【讨论】:

    【解决方案2】:

    哈希不能被反转。你应该选择http://php.net/manual/en/book.mcrypt.php

    【讨论】:

      【解决方案3】:

      如果没有查找表,您所要求的(基本上)是不可能的。您显然可以使用标准压缩算法,但是您必须将压缩数据编码为 ASCII 字符串(base-64 等),这可能比原始字符串大。

      【讨论】:

      • 同意。 OP想要一个哈希表。根据定义,哈希是不可逆的。
      【解决方案4】:

      【讨论】:

        【解决方案5】:

        尝试这样的事情:使用标题中每个单词的首字母并将其保存在 post 表的列中。

        使用您的示例(site.com/stackoverflow.com/questions/9217271/php-reverse-able-unique-hash),网址将是“prauh”。

        如果 url 恰好存在于数据库中,您可以添加 2 个随机字母数字字符,然后再次检查您的数据库以查看它是否存在。

        【讨论】:

          【解决方案6】:

          在一些评论者的帮助下,我创建了一个小班来做这种事情。
          http://blog.kevburnsjr.com/php-unique-hash

          【讨论】:

            猜你喜欢
            • 2011-02-15
            • 2019-05-01
            • 1970-01-01
            • 2015-04-12
            • 1970-01-01
            • 1970-01-01
            • 2014-09-03
            • 2011-01-29
            • 2013-09-12
            相关资源
            最近更新 更多