我希望能夠產生這樣的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