2011-09-13 65 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解码它。