GET输入的基本javascript压缩

时间:2013-02-11 13:43:08

标签: php forms input get

我正在寻找一种简单的解决方案来减少我的GET输入代码的长度(在我的网站上)。

表单在JavaScript中处理,并且使用函数使URL共享更简单。例如:具有不同名称的多个表单输入将转换为简单的settings=1,0,0,1并作为GET放置在URL中 - 然后在PHP中展开/内爆此数据以使用/重新使用输入。

但是,考虑到表单的大小,它仍然会变得非常臃肿。我想在JavaScript中压缩相同的数据,然后在PHP中对其进行解压缩,从而允许相当短的URL进行共享。

想想TinyUrl。我做了一些谷歌搜索,但解决方案比我想要的更复杂 - 这不是试图隐藏数据,只是缩短

更新:我想要的更好的示例是将长的GET输入转换为settings=1,1,1,1,1,1,1,1,1,1,1,1,1,如settings=s8djh

3 个答案:

答案 0 :(得分:1)

您可以像这样创建自己的“短网址”:从参数创建唯一ID(例如md5哈希)并将id参数对存储在数据存储中。

您可以使用数据库,键值存储(如BerkeleyDB)或noSQL数据库或存储两个值的平面文本文件。

如果MD5哈希仍然太长,您有两个选择:1)只需使用为您存储的每个参数字符串计数的计数器。但请注意,可以通过简单的URL操作来达到每个参数组合。另一种选择是创建一个随机的n字符串(n至少> = 4),看它是否存在于数据库中。如果它不存在,请使用该字符串作为id。如果确实存在,请使用nerw字符串尝试2-5次,如果它们都存在,则将n逐个增加。随着时间的推移,你将填充4-char命名空间,然后填充5-char命名空间等.6-char命名空间(使用大小写和数字)允许62 ^ 6组合 - 需要填写很多!

有关示例代码,请参阅此introductory article。它使用在base62中编码的MD5哈希值作为哈希值,使它们比通常的32个十六进制字符长。

编辑:如果您不想使用数据存储,则using an actual compression algorithm like LZW in JavaScript可能会缩短相同参数的长行。

答案 1 :(得分:0)

您可以使用某种固定的“方案”从网址中删除冗余数据:

settings = 1,0,0,1可能会变成: V = A&安培; S = 9

其中a是您的方案的版本(如果您将来需要更改它,并保持旧的url:s有效),则s是值。如果1,0,0,1表示布尔值(1/0,真/假),那么它们可以分别存储在一个位中。每位浪费一个字符是不好的..将它们全部打包在一位,并以十六进制发送结果:每个字符4位。

但是,当您需要更改任何内容时,这会使一切变得更加复杂,但这取决于您的方案。但它是可能的,这是缩短网址长度的一种非常有效的方法:

答案 2 :(得分:-3)

使用:

http://phpjs.org/functions/base64_encode/

在JS中

并通过内置的 base64_decode

在php中对其进行解码