我正在寻找一种简单的解决方案来减少我的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
。
答案 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)