2013-03-20 50 views
0

我用gzcompress()在PHP中传递的值,例如:gzcompress和gzuncompress在PHP

$value=gzcompress("hello"); 

myphp.php?q=$value; 

然后我gzuncompress()myphp.php

$q=$_GET["q"]; 
gzuncompress($q); 

,但我得到这样的警告:

gzuncompress(): data error 

为什么这不起作用?

回答

1

您需要urlencode()压缩数据。你不能简单地将基本上随机看起来的二进制垃圾放入类似的URL中。至少ONE的压缩数据中的字符将成为URL元字符,例如, +,当解码时它会被篡改为' '(空格)字符。所以,

$value = urlencode(gzcompress('hello')); 

PHP会做的URL解码支持你自动填充$ _GET,所以解码端将会更加简单

$q = gzuncompress($_GET['q']) 

如前。

+0

感谢您的回答。有用。但是,电子邮件http://mydomain/myphp.php?q = x%9CK%04%00%00b%00b上的此链接不起作用,点击时不会发生任何事情。请介意看看吗? – 2013-03-20 17:44:24

+0

与$ _POST相同 – wesamly 2014-02-26 12:19:35