2013-07-03 6 views
0

У меня есть скрипт php (listen.php), который прослушивает любые входящие запросы GET.PHP - передача неизвестных/больших строковых значений скрипту

В настоящее время я слушаю только определенные переменные 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-адресу не очень хорошая идея, но я ловя рыбу идей.

ответ

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']))); 
?> 
+0

Я сделал тест, и он выглядит как '' gzdeflate' и gzinflate' могут быть жизнеспособными также. –

+0

Мне нравится ваша оптимизированная форма кодирования и сериализации массива. Я не думал об этом и кажется самым жизнеспособным путем. – coffeemonitor

+0

Основываясь на некоторых исследованиях и http://stackoverflow.com/questions/2659952/maximum-length-of-http-get-request, кажется, вы * можете * быть в порядке, чтобы использовать это. Вы можете выбрать, что хотите от '$ _SERVER', чтобы сократить длину строки. Однако в моем тестировании $ srv закончил только около 1200 символов, включая сжатие. –

Смежные вопросы