如何生成与db记录匹配的唯一URL变量?

时间:2009-06-30 19:48:00

标签: php mysql url uniqueidentifier

我希望能够像这样生成URL变量:

http://example.com/195yq
http://example.com/195yp
http://example.com/195yg
http://example.com/195yf

变量将匹配MySQL记录集,以便我可以将其拉出来。在创建该记录集时,我希望为它创建此密钥。

我该怎么做?做这个的最好方式是什么?我可以使用任何现有的课程吗?

全部谢谢

4 个答案:

答案 0 :(得分:0)

这可以通过以下几种方式非常简单地完成:

  • 使用哈希,例如MD5。 (会很长)
  • Base-64对特定ID或数据进行编码

如果您在询问是否有任何与MySQL记录有关的内容,我不确定您是否会发现设计方面的内容,数据确实在概念上远离网址中的URL你的网站,甚至在像Grails这样的框架中。大多数人甚至都没有尝试将前端和数据访问功能整合到一个单独的部分中。

答案 1 :(得分:0)

你将在什么情况下使用它?为什么不直接传递变量?它更加安全和整洁。您仍然可以完成URL中的数字,例如id = 195yq,并且有一种方法可以通过配置php.ini文件来隐藏它们。

我希望这对你有所帮助。

请记住这一点。当您在地址栏中传递变量时,某人可以轻松更改变量,并访问您可能不希望他们访问的信息。

答案 2 :(得分:0)

在您给出的示例中,您看起来像是对数字主键进行base-64编码。我就是这样做的,并且在过去已经完成了,但我不确定它是否比明确传递ID更好,因为base-64解码是微不足道的。

答案 3 :(得分:0)

基本上,你需要某种哈希函数。

这可以是SHA-1功能,MD5功能(作为altCogito),也可以使用记录中的其他数据并对其进行编码。

您认为您将拥有多少条记录?选择解决方案时要小心,因为哈希函数必须足够大才能覆盖你,但是太大而你创建的数据库比你需要的大。我根据需要使用了SHA-1并截断为64位或32位。

另外,看看REST。考虑到URL可能不必如此神秘......