我希望能够产生这样的URL变量:如何生成与db记录匹配的唯一URL变量?
http://example.com/195yq
http://example.com/195yp
http://example.com/195yg
http://example.com/195yf
的变量将匹配一个MySQL记录集,这样我可以拉出来。在创建该记录集时,我希望为其创建此密钥。
我该怎么做?做这个的最好方式是什么?有没有我可以使用的现有类?
感谢所有
我希望能够产生这样的URL变量:如何生成与db记录匹配的唯一URL变量?
http://example.com/195yq
http://example.com/195yp
http://example.com/195yg
http://example.com/195yf
的变量将匹配一个MySQL记录集,这样我可以拉出来。在创建该记录集时,我希望为其创建此密钥。
我该怎么做?做这个的最好方式是什么?有没有我可以使用的现有类?
感谢所有
基本上,你需要某种散列函数。
这可以是SHA-1功能,MD5功能(如altCogito)或使用记录中的其他数据并对其进行编码。
您认为您会拥有多少条记录?选择解决方案时要小心,因为散列函数必须足够大才能覆盖你,但是太大而且你创建的数据库比你需要的大。我已经使用SHA-1并根据需要截断为64或32位。
另外,看看REST。考虑到网址可能不必如此神秘...
在什么情况下你会使用它?为什么不通过post变量?它更安全和整洁。您仍然可以完成url中的数字,例如id = 195yq,并且可以通过配置您的php.ini文件来隐藏它们。
我希望这可以对你有所帮助。
请记住这一点。当您在地址栏中传递变量时,有人很容易更改变量,并访问您可能不希望他们访问的信息。
任何人都可以使用这些URL来查找我网站上的特定页面。将会有许多页面和内容将由用户生成。它需要尽可能短。 – Abs 2009-06-30 19:55:30
我明白了。对不起,我帮不了你。祝你好运,这对我也是非常有帮助的,所以我会一直关注。 +1一个很好的问题! – 2009-06-30 20:06:10
在你给出的例子中,它看起来像是base-64编码的数字主键。这就是我过去如此做的事情,但是我不确定这比将ID传给明确的人更好,因为base-64解码是微不足道的。
你说:“在创建该记录集时,我希望为它创建此密钥。”你真的想在哪里创建这个网址?数据库或更高层? – alphadogg 2009-06-30 20:29:47