7

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

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

mysite.com/?page_id=632&crypt=@7564ASKJjkkjh....encrypted string.

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

但我无法获得 'crypt' 参数。

我也试过 var_dump($_REQUEST)。它也只给出 page_id 而不是 crypt 参数。

我不想从查询字符串中检索“crypt”参数。

注意:它在本地主机上正常工作。我得到了两个参数。但是当我在实时服务器上上传我的网站时,我只能获得 page_id,但不能获得“crypt”参数。

有任何想法吗?

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

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

但它在本地主机上工作正常

4

2 回答 2

4

回答

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

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

suhosin.get.max_value_length = LIMIT_HERE

参考

来源: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()

.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"
于 2012-11-14T10:05:11.487 回答
3

我认为您的生产环境在 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

于 2012-11-14T08:51:58.210 回答