1

我的脚本正在生成一个很长的 URL,就像下面的一样,我想知道如何使用算法或技术来缩短它?

这是长 URL: http ://example.com/script.php?param1=value1¶m2=value2¶m3=value3¶m4=value4¶m5=value5

我想把它缩短成这样: http ://example.com/script.php?p=430x2920

如何在不缓存数据库的原始链接的情况下做到这一点?

提前致谢。

4

7 回答 7

1

将静态值添加到$_SESSION[].

于 2009-05-01T13:45:02.110 回答
1

您可以使用 post 作为您的值。但是,如果您真的需要 url 中的所有信息,我认为您应该开始实施 url 重写......是重写的开始。

于 2009-05-01T14:00:14.150 回答
1

如果您不想使用数据库来存储缩短(散列)URL 的查找表,那么您必须设计某种函数来将缩短的 URL 转换为全长 URL。

换句话说,您的完整 URL 必须具有可以压缩成较短的属性。

例如我可以压缩以下 URL

http://example.com/script.php?param1=saffron&param2=sierra&param3=4

进入

http://example.com/script.php?p=p1.sa_p2.si_p3:4

如果我知道 param1 和 param2 只接受某些关键字,而 param3 只接受数字。

于 2009-05-01T14:01:44.847 回答
1

您总是可以只使用带有分隔符的单个参数,然后将其拆分回代码中。

http://example.com/script.php?p=1x2x3x4x5

用 x 或任何你想要的不是作为分隔符的可能值的一部分。

于 2009-05-01T14:17:30.223 回答
0
  • 使用RESTful接口,而不是一堆查询参数。

  • 存储将在服务器上的会话中持续存在的值,由会话 cookie 键入。

于 2009-05-01T13:58:02.530 回答
0

计算出完整的可能值集,并提出一种编码/解码它们的双向算法。

例如,如果您有 3 个参数并且它们只是单个数字整数,那么您可以使用 ?123 代替 ?param1=1¶m2=2¶m3=3 并将查询字符串按每个字符拆分以获取每个参数。

不过,这有多大可能完全取决于您期望什么样的值。

于 2009-05-01T14:02:08.137 回答
0

我通常会做这样的事情来减少参数:

你的链接:

http://example.com/script.php?param1=value1&param2=value2&param3=value3&param4=value4&param5=value5

我最喜爱的:

http://example.com/script.php?params=value1,value2,value3,value4,value5

http://example.com/script.php?params=value1|value2|value3|value4|value5

于 2009-05-01T17:32:28.383 回答