Не удается получить значение параметра строки запроса

Я интегрировал Sage Pay со своим сайтом WordPress. В настоящее время я запускаю sagepay в режиме симулятора.

После успешной оплаты sagepay перенаправляет на страницу успеха моего сайта. URL-адрес перенаправления выглядит следующим образом.

mysite.com/?page_id=632&[email protected] string.

когда я пытаюсь получить параметр строки запроса на моей странице успеха с помощью $_REQUEST или $_GET, я могу получить только page_id.

Но я не могу получить параметр «crypt».

Я также пробовал var_dump($_REQUEST). Он также дает только page_id, но не параметр crypt.

Я не хочу извлекать параметр crypt из строки запроса.

Примечание. Он правильно работает на локальном хосте. У меня есть оба параметра. Но когда я загрузил свой сайт на работающий сервер, я могу получить только page_id, но не параметр 'crypt'.

Есть идеи?

Обновление: моя строка запроса, предоставленная Sage pay, выглядит следующим образом:

mysite.com/?page_id=632&crypt=@758D2CD31D4B6C192BB70DC99A9F9E1EEAD181E280A3B617E73ACD3E893992E5B9A8A823C3E3B5BE7AF4CEA53C3D12C5C39ECE6F203A2ED76B82711C2E84CFBA1D2574B80F1A53EE4C1D49C60570839F1B1AD4EE83C3D208B943EA9E5F88F94AA3D9F9C2E58F8C7A476787EF8DD438CF8A102AD0D154864291DC02FB8626C177CC02C18F102300AFA0F390841B1C841A2B5A90DB9B1741A46D7AC4C0CA11E90D3C230D5FB6767FAE638A31714FD2C432CB3854162AE49F2C88761C5BAFB92E9ACE354425D9D9801705B088580B9BE113C1319B41893BFC0A2B190F10E8FB5D6EEA779E725D129EE483C631373930BD0F6E6747CD7D79F7AD726D11CB17547D00015CA5793F6E322B8FA0354EAE2DF83A2BD460AB718AC205346EE3E39418B3FBF181B82DB8BC19448F6AC6F48121129F48F2F557F265C5B6A65B23B3FFA516182C7ECA416B6BD9C04E7693744F6133EB4E1989245073FE835D3BA19A8B1EE101

но он отлично работает на локальном хосте


person Prakash Pala    schedule 14.11.2012    source источник
comment
Вы можете опубликовать параметр crypt?   -  person Austin Brunkhorst    schedule 14.11.2012
comment
Просто попробуйте без знака @ и посмотрите, сработает ли это. По крайней мере, это сузит круг вопросов :-)   -  person Ben Carey    schedule 14.11.2012
comment
Неа. Это перенаправление осуществляется системой Sage Pay после успешной оплаты. Таким образом, мы не можем установить тип метода.   -  person Prakash Pala    schedule 14.11.2012
comment
@PrakashPala можешь urlencode параметры? или у вас нет контроля над ними?   -  person Ben Carey    schedule 14.11.2012
comment
Бену Карли: параметр crypt отправляет Sage Pay. Мы не можем изменить его значение :(   -  person Prakash Pala    schedule 14.11.2012
comment
Да, у нас нет контроля над этой строкой.   -  person Prakash Pala    schedule 14.11.2012
comment
@PrakashPala Ах, это очень странно. Не могли бы вы обновить свой вопрос полным запросом? Просто чтобы проверить, нет ли других проблем :-)   -  person Ben Carey    schedule 14.11.2012
comment
давайте продолжим обсуждение в чате   -  person Prakash Pala    schedule 14.11.2012
comment
@PrakashPala Повезло с моим ответом?   -  person Ben Carey    schedule 14.11.2012


Ответы (2)


Отвечать

Похоже, вы используете Suhosin Security Patch. Этот патч ограничивает ваш параметр $_GET максимум 512 байтами.

Чтобы обойти это, вам нужно будет добавить значение к вашему php.ini.

suhosin.get.max_value_length = LIMIT_HERE

Ссылка

Источник: http://www.php.net/manual/en/reserved.variables.get.php#101469

Обратите внимание, что настройки PHP с установленным патчем suhosin будут иметь ограничение по умолчанию в 512 символов для параметров получения. Несмотря на плохую практику, большинство браузеров (включая IE) поддерживают URL-адреса длиной до 2000 символов, в то время как Apache по умолчанию использует 8000.

Чтобы добавить поддержку длинных параметров с помощью suhosin, добавьте suhosin.get.max_value_length = <limit> в php.ini.

ОБНОВЛЕНИЕ 1

Поскольку у вас нет доступа к вашему php.ini, вам нужно будет изменить значение либо в файле .htacess (если вы используете Apache), либо, в качестве альтернативы, вы можете сделать это с помощью встроенной функции PHP ini_set().

Метод .htacess:

php_value suhosin.get.max_value_length 8000

метод ini_set:

ini_set('suhosin.get.max_value_length', '8000');

Однако вполне вероятно (но не обязательно), что ваша установка PHP не позволит модифицировать переменные Suhosin для каждого каталога. Чтобы исправить это, вы должны запросить размещение этого в вашем php.ini, иначе вы ничего не сможете сделать.

suhosin.perdir = "p"
person Ben Carey    schedule 14.11.2012
comment
Да, но я не могу получить доступ к файлу php.ini на сервере. Есть ли способ загрузить собственный php.ini или внести некоторые изменения в файл .htaccess для конкретного исправления? и +1 за вашу помощь :) - person Prakash Pala; 14.11.2012
comment
@PrakashPala В большинстве случаев вы не можете загрузить собственный php.ini. Лучше всего было бы использовать файл htaccess или ini_set(). изменит ответ - person Ben Carey; 14.11.2012
comment
Спасибо Бен! Проблема решена. Я загрузил свой собственный файл php.ini с suhosin.get.max_value_length = 6000. Большое спасибо за вашу помощь. - person Prakash Pala; 14.11.2012
comment
@PrakashPala Отлично, рад помочь :-) - person Ben Carey; 14.11.2012

Я думаю, что в вашей производственной среде настроены фильтры в php.ini для $_REQUEST, проверьте раздел фильтров вашего php.ini, дополнительная информация: http://www.php.net/manual/en/filter.configuration.php

Если вы не хотите изменять эту конфигурацию в производственной среде, вы можете получить доступ к значению с помощью filter_input, дополнительная информация: http://www.php.net/manual/en/function.filter-input.php

person m4t1t0    schedule 14.11.2012