PHP - 将未知/大字符串值传递给脚本

时间:2013-07-03 16:33:10

标签: php url variables

我有一个php脚本(listening.php),可以监听任何入境GET请求。

目前,我只会听取特定的GET个变量。忽略所有其他变量。

我在外部网址上放置一个简单的像素类型脚本:

<?php
 $url = $_SERVER['SCRIPT_URI'];
?>
<script src="http://mydomain.com/listening.php?page=1&url=<?php echo $url;?>"></script> 

这很好用,花花公子。 我想传递更多信息,但我想传递数组中的所有$_SERVER变量。

我有几个选项,比如循环遍历数组,并使用键/值构建url字符串。

但是,我更感兴趣的是将整个数组作为一个整体传递,并将它存储在mysql中,位于Text列中。

我知道可能通过网址传递单个字符串的大小有限。

有没有人对这样做的最佳做法有好的方法或想法? 我个人希望通过网址传递数组不是一个好主意,但我正在寻找创意。

1 个答案:

答案 0 :(得分:0)

您可以对数组进行编码和序列化:

<?php
$url = $_SERVER['SCRIPT_URI'];
$srv = base64_encode(serialize($_SERVER));
?>
<script src="http://mydomain.com/listening.php?page=1&url=<?php echo $url;?>&srv=<?php echo $srv; ?>"></script>

然后在听力脚本中,你做了相反的事情:

<?php
$srv = unserialize(base64_decode($_GET['srv']));
?>

但是,请记住,这些请求对GET长度有限制。

话虽如此,您可以使用gzcompressgzuncompress

$srv = base64_encode(gzcompress(serialize($_SERVER)));

解压缩它:

<?php
$srv = unserialize(base64_decode(gzuncompress($_GET['srv'])));
?>