无法获取查询字符串参数值

Pra*_*ala 6 php wordpress opayo

我已经将sage pay与我的wordpress网站集成在一起.我目前正在模拟器模式下运行sagepay.

成功付款后,sagepay会重定向到我网站的成功页面.重定向网址是这样的.

mysite.com/?page_id=632&crypt=@7564ASKJjkkjh....encrypted string.
Run Code Online (Sandbox Code Playgroud)

当我试图通过$ _REQUEST或$ _GET在我的成功页面上获取查询字符串参数时,我只能得到page_id.

但我不能得到'crypt'参数.

我也试过var_dump($ _ REQUEST).它还只提供page_id但不提供crypt参数.

我不想从查询字符串中检索'crypt'参数.

注意:它正确地在localhost上工作.我有两个参数.但是当我在实时服务器上上传我的网站时,我只能获得page_id,而不能获得'crypt'参数.

有任何想法吗?

更新:我的Sage pay给出的查询字符串是这样的:

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

但它在localhost上工作正常

Ben*_*rey 4

回答

您似乎正在运行 Suhosin 安全补丁。此补丁将您的$_GET参数限制为最大 512 字节。

为了解决这个问题,您需要为您的php.ini.

suhosin.get.max_value_length = LIMIT_HERE
Run Code Online (Sandbox Code Playgroud)

参考

来源:http ://www.php.net/manual/en/reserved.variables.get.php#101469

请注意,安装了 suhosin 补丁的 PHP 设置对于获取参数的默认限制为 512 个字符。虽然这种做法不好,但大多数浏览器(包括 IE)都支持最多大约 2000 个字符的 URL,而 Apache 的默认值为 8000 个字符。

要使用 suhosin 添加对长参数的支持,请 suhosin.get.max_value_length = <limit>在 php.ini 中添加

更新1

由于您无权访问您的php.ini,因此您需要更改.htacess文件中的值(如果您使用的是 Apache),或者您也可以使用内置的 PHP 函数来完成此操作ini_set()

.htaccess方法:

php_value suhosin.get.max_value_length 8000
Run Code Online (Sandbox Code Playgroud)

ini_set方法:

ini_set('suhosin.get.max_value_length', '8000');
Run Code Online (Sandbox Code Playgroud)

但是,您的 PHP 安装很可能(但不确定)不允许在每个目录的基础上修改 Suhosin 变量。为了解决这个问题,您必须请求将其放入您的 中php.ini,否则您将无能为力。

suhosin.perdir = "p"
Run Code Online (Sandbox Code Playgroud)