2011-09-13 97 views
-2

美麗查詢字符串我想創建由長和易於理解的查詢字符串PHP創建長的查詢字符串

一個美麗的查詢字符串,例如

http://www.domain.com/play.php?a=10&b=20&c=30 

首先這是改變長的查詢字符串,第二它是明白能夠a,b的價值。

我想是PHP函數,整個查詢字符串轉換爲a=10&b=20&c=30一些文字像f4cdret4

,然後我同傳似

http://www.domain.com/play.php?q=f4cdret4 

play.php我再轉換回f4cdret4a=10&b=20&c=30

我想找到這樣的事情,但很多天搜索沒有成功。

謝謝

+0

我猜http://www.domain.com/play.php?q=a10b20c30不是一個選項:D – Terence

回答

1

從可用性的角度來看,這是一個壞主意。我作爲一個用戶會對你很生氣。我建議你閱讀約URL Design

此外,聽起來像你想保持從用戶的東西。如果是這樣它並不安全如果你這樣做

$url .= '?q=' . base64_encode(http_build_query($parms)); 
0

一般來說,你不希望從用戶意義的任何假​​象離婚您的網址,除非你是顯著縮短它在character-使用有限的設置,如Twitter的帖子。

也就是說,有幾種方法來實現這一點。可以:

  • 預生成這些網址和交叉引用的查詢字符串存儲在數據庫中(使用「f4cdret4」作爲唯一的索引,「A = 10 & B = 20 & C = 30」作爲第二列)
  • 與某種隔板一起搗碎它們(A = 10 & b = 20 & C = 30變爲 「A10-B20-C30」)
  • 使用htaccess的,使僞目錄(A = 10 & b = 20 & c = 30變成「mydomain.com/q/10/20/30」)

    RewriteEngine On

    RewriteRule /q/(.*)/(.*)/(.*)$ /page/play.php?a=$1&b=$2&c=$3

1

你可以使用一些字符串轉換功能,以隱藏真實的查詢字符串。這裏是我想出了利用bin2hexpack

<?php 
$str = 'a=10&b=5&c=20&d=6'; 
$encoded = bin2hex($str); 
echo $encoded; 
echo "\n"; 
echo pack("H*",$encoded); 
?> 

example 一個簡單的例子,你可以使用bin2hex對它進行編碼,並pack解碼它。