Извините кажется, что я не могу добавить комментарий без достаточного количества члена палаты представителей так...
я думаю, что для затмения слишком трудно ухудшиться безопасно к более низкому стандарту, потому что это не может действительно знать, использовали ли Вы что-то от более нового веб-стандарта. Таким образом, если это просто позволяет Вам, делают, к которому это могло заставить Вашу программу перестать работать на более старой версии.
можно всегда быть обратно совместимыми, но не вперед совместимыми.
Есть очень простое решение: http_build_query ()
. Он принимает параметры вашего запроса в виде ассоциативного массива:
$data = array(
1,
4,
'a' => 'b',
'c' => 'd'
);
$query = http_build_query(array('aParam' => $data));
вернет
string(63) "aParam%5B0%5D=1&aParam%5B1%5D=4&aParam%5Ba%5D=b&aParam%5Bc%5D=d"
http_build_query ()
обрабатывает все необходимые экранирования для вас (% 5B
=> [
и % 5D
=> ]
), поэтому эта строка равна aParam [0] = 1 & aParam [1] = 4 & aParam [a] = b & aParam [c] = d
.
Изменить: Не пропустите решение Стефана выше, в котором используется очень удобная функция http_build_query ()
: https://stackoverflow.com/ a / 1764199/179125
knittl прав в отношении побега. Однако есть более простой способ сделать это:
$url = 'http://example.com/index.php?';
$url .= 'aValues[]=' . implode('&aValues[]=', array_map('urlencode', $aValues));
Если вы хотите сделать это с ассоциативным массивом, попробуйте вместо этого следующее:
PHP 5.3+ (лямбда-функция)
$url = 'http://example.com/index.php?';
$url .= implode('&', array_map(function($key, $val) {
return 'aValues[' . urlencode($key) . ']=' . urlencode($val);
},
array_keys($aValues), $aValues)
);
PHP <5.3 (обратный вызов)
function urlify($key, $val) {
return 'aValues[' . urlencode($key) . ']=' . urlencode($val);
}
$url = 'http://example.com/index.php?';
$url .= implode('&', array_map('urlify', array_keys($aValues), $aValues));
Самый простой Можно было бы использовать функцию сериализации
.
Она сериализует любую переменную для хранения или передачи. Вы можете прочитать об этом в руководстве php - сериализация
Переменная может быть восстановлена с помощью unserialize
Таким образом, при переходе к URL-адресу, который вы используете:
$ url = urlencode (serialize ($ array))
и для восстановления переменной используется
$ var = unserialize (urldecode ($ _ GET ['array']))
Однако будьте осторожны. Максимальный размер GET-запроса ограничен 4 КБ, который вы легко можете превысить, передав массивы в URL.
Кроме того, это действительно не самый безопасный способ передачи данных! Вам, вероятно, следует изучить возможность использования сессий.
избегайте переменных при выводе ( urlencode
).
и вы не можете просто распечатать массив, вам нужно создать свой URL, используя цикл в некоторых способ
$url = 'http://example.com/index.php?'
$first = true;
foreach($aValues as $key => $value) {
if(!$first) $url .= '&';
else $first = false;
$url .= 'aValues['.urlencode($key).']='.urlencode($value);
}