0

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

现在,我只听特定的GET变量。所有其他变量都被忽略。

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

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

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

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

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

我知道通过 url 传递单个字符串的大小可能存在限制。

有没有人有一个关于这样做的最佳实践的好方法或想法?就我个人而言,我希望通过 url 传递数组不是一个好主意,但我正在寻找想法。

4

1 回答 1

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 长度有限制。

话虽如此,您可以使用gzcompressand gzuncompress

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

解压它:

<?php
$srv = unserialize(base64_decode(gzuncompress($_GET['srv'])));
?>
于 2013-07-03T16:43:14.297 回答