我有一个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列中。
我知道可能通过网址传递单个字符串的大小有限。
有没有人对这样做的最佳做法有好的方法或想法? 我个人希望通过网址传递数组不是一个好主意,但我正在寻找创意。
答案 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长度有限制。
话虽如此,您可以使用gzcompress
和gzuncompress
:
$srv = base64_encode(gzcompress(serialize($_SERVER)));
解压缩它:
<?php
$srv = unserialize(base64_decode(gzuncompress($_GET['srv'])));
?>