Передать большие переменные с php и http? - PullRequest
1 голос
/ 19 июля 2009

Я хочу передать большие переменные в скрипт PHP на другом сервере с http, как: "example.com/get.php?data= это довольно много данных ..."

Я всегда получаю ответ сервера (apache): «Request-URI Too Large»

Есть идеи, как передать большие переменные в этот скрипт?

Ответы [ 6 ]

4 голосов
/ 19 июля 2009

Если данные слишком велики для GET, как насчет использования POST?

(Учитывая ограничение размера POST, как правило, около 2 МБ в PHP; зависит от конфигурации и может быть больше.)

Если вы используете curl (то есть, если на вашем сервере находится скрипт PHP, который выполняет запрос к другому серверу; в противном случае вы, вероятно, будете использоватьформы в HTML) , посмотрите документацию curl_setopt: некоторые варианты определенно вас заинтересуют; -)

1 голос
/ 19 июля 2009

Попробуйте использовать POST вместо GET? То есть как то так:

<form name=fooForm method=POST action=http://example.com/get.php> <input type="hidden" name=data value="this is quite a lot of data"> </form>

Либо добавьте кнопку отправки, либо инициируйте отправку, используя JavaScript, примерно так:

<a href="javascript:document.fooForm.submit()">Submit</a>

Вы также можете попробовать передать данные через куки, они могут быть размером до 4 КБ.

0 голосов
/ 19 июля 2009

Если у вас есть какой-либо контроль над исходным кодом сценария PHP на другом сервере, это должны быть данные POST, а не GET. Однако, если у вас есть очень веские / практические причины использовать GET вместо post. Затем вам нужно пойти на компромисс и пожертвовать возможностью отправлять очень большие данные, чтобы продолжать использовать метод GET.

Существуют верхние ограничения на длину URL-адреса, как справедливо указал Джоэри, и этот предел может отличаться в зависимости от браузера для браузера и от сервера к серверу. Также возможно, что разные версии или один и тот же браузер / сервер поддерживают разные максимальные длины URL. Поэтому существует ограничение на объем данных, которые вы можете отправлять в кодировке URL-адреса по запросу GET.

0 голосов
/ 19 июля 2009

Определенно используйте POST.

Кстати, эта ссылка документирует максимальные длины URL:
http://www.boutell.com/newfaq/misc/urllength.html

  • Браузеры: + - 2000
  • Apache: + - 4000
  • IIS: + - 16000
0 голосов
/ 19 июля 2009

Лучший выбор - $ _POST. Вы даже можете использовать AJAX, чтобы добавить «значок загрузки», если переменная имеет большое значение.

0 голосов
/ 19 июля 2009

Как уже было сказано, вы действительно должны переключиться на POST.

Начальный максимальный размер для POST составляет около 2 МБ, и его можно настроить, установив upload_max_filesize и post_max_size в файле php.ini.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...