【问题标题】:Reducing Query string size of PHP form [duplicate]减少PHP表单的查询字符串大小[重复]
【发布时间】:2014-06-14 21:31:00
【问题描述】:

我目前有这样的网址

http://blahblah.com/process.php?q=[HUGEEEEEEEEEEEEEEEEEEEEEEEE STRING of 5000 chars]

我的目标是将其转换为类似

http://blahblah.com/process.php?q=[less charcters]

第一个问题:

如何在将我的 GET 变量发送到操作页面之前对其执行功能(例如加密功能)?

我看到很多关于类似主题的问题。

第二个问题:

假设,我可以通过某种方式(可能通过 jQuery/JavaScript 或其他方式)完成上述操作。如何在index.php页面压缩,在process.php页面解压?

我的尝试:

搜索固定长度的函数:

我查看了一些保持字符串大小的加密方法。 md5() 给出了一个短而整齐的标准长度,即使对于一个非常大的字符串也是如此。但不幸的是,md5 无法轻易解码。是否有任何其他这样的函数可以解码并且具有固定长度?如果是这样,假设我知道第 1 步的方法,我可以使用它。

编辑:我写了一个请求,不要将其标记为该问题的副本,并且再次明确提出了一个尚未回答的问题。请阅读@Jeremy 的 cmets,他正在关注这篇文章。

【问题讨论】:

  • 了解您想要达到的具体目标会有所帮助。我并不是说“加密 POSTdata”,因为这就是 SSL 的用途。我的意思是,你的项目目标是什么?就目前而言,这个问题对我来说是“XY 问题”。
  • 仅供参考:POST 数据不在 URL 中(即 GET 数据)。
  • @Niet 我希望我说清楚了 :)
  • @user3739937 然后生成一个具体的url并将字符串保存到数据库中,然后根据url进行比较。
  • 智能解决方案。如果一个页面需要一个 2.2K 长的字符串来表示它,那就有问题了。

标签: javascript php jquery


【解决方案1】:

我个人认为最好使用 POST 将数据发送到页面。我很确定您不能使用 MD5 之类的东西来“压缩”数据,因为 MD5 所做的是对数据进行哈希处理,因此它会查看您的数据运行一个算法来创建这个固定长度的哈希。

但是,两个数据集创建相同散列的可能性极小,因此在我看来,可靠地解密 MD5 或其他类似散列是不可能的。查看this page 了解更多关于哈希冲突的信息。

【讨论】:

  • md5 在这种情况下无用是问题的一部分。
  • 我已经指出了md5不能用于这个目的的原因。
  • 确实是这样,我并不是要浪费时间,我使用 MD5 作为任何类型的哈希生成算法的示例。
【解决方案2】:

您的问题是您以错误的方式使用互联网。 URL 是有限的(取决于浏览器),所以不要尝试使用长 URL - 即使您想缩短它。

请记住,我们使用 WordWideWeb 已经很长时间了,如果您遇到了死胡同,您只需要重新考虑您的问题。也许您以错误的方式使用当前技术。

因此,请改用 POST 来传输您的数据(正如前面提到的其他人)。

如果你想“压缩”你的数据,你应该使用类似 zip 的东西,然后你必须让那个 URL 像 BASE64 一样确认。这在任何方面都不合适,而且非常可怕。 (当然它不能保证你的 URL 的长度)。

MD5 是哈希而不是压缩。 MD5 是不可逆的。一旦你散列了一些东西,你就不能再回去了。这不是将大量兆字节压缩成一个短数字的神奇方法。这是一个简短的东西,可以判断原始数据是否被修改(如果你这样做了两次)。

http://en.wikipedia.org/wiki/Hash_functionhttp://en.wikipedia.org/wiki/MD5

顺便说一句:和How to compress/decompress a long query string in PHP?一样

【讨论】:

  • 非常适合非英语母语人士 Raxa。 +1,我期待您继续贡献。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多