gpt4 book ai didi

php - 没有换行的 POST 失败,但换行有效?

转载 作者:搜寻专家 更新时间:2023-10-31 22:00:18 25 4
gpt4 key购买 nike

我正在调试一个 PHP 应用程序,我必须在其中将一些数据发布到我的服务器,然后解析它并返回一些值—— super 简单的东西。

数据的格式是:

action=display_all_pols&donate_form=1&user_state=&state=AK&pols[LA][0][post_id]=2714&pols[LA][0][first_name]=Ralph&pols[LA][0][last_name]=Abraham &pols[LA][0][profile_image]=2762

我的数据大小因小而异,例如187 字节,更大的东西,例如46KB。

我注意到我的应用程序未能正确解析 POST。代码是这样的:

function Foo() {
$state = somehow_get_state();
$bar = $_POST['pols'][$state];
// cool logic and stuff

我立即在 Foo() 中放置了一个 die(var_dump($_POST));,并注意到实际上只有一部分数据被 POST。

当我在命令行上对此进行测试时,我注意到两者之间的区别:

POST http://10.1.10.22/wesupportthat/wp-admin/admin-ajax.php
action=display_all_pols&donate_form=1&user_state=&state=AK&pols[LA][0][post_id]=2714&pols[LA][0][first_name]=Ralph&pols[LA][0][last_name]=Abraham &pols[LA][0][profile_image]=2762

还有这个(注意换行);

POST http://10.1.10.22/wesupportthat/wp-admin/admin-ajax.php
action=display_all_pols&donate_form=1&user_state=&state=AK&
pols[LA][0][post_id]=2714&
pols[LA][0][first_name]=Ralph&
pols[LA][0][last_name]=Abraham&
pols[LA][0][profile_image]=2762

前者只会发布大约 3.1KB 的数据,而后者会发布整个数据。

有什么原因吗?我发布的是有效的 JSON,看在我的份上,我无法弄清楚为什么一个有效而另一个无效。

为了创建 JSON,我创建了一个嵌套数组,如下所示:

array( // root-level array
array(
'1' => 'somestring',
'2' => '...',
'3' => '...',
'4' => '...'
),
array( // same as previous),
// more arrays, potentially up to 50 total
)

然后调用 json_encode($my_array, JSON_HEX_APOS); 来创建 JSON。

我希望这只是一个橡皮鸭时刻。 :-)

编辑:我正在离开我的电脑,但 TCP 捕获显示了同样的事情。当我回来时也会添加我的 Apache/php 信息。

最佳答案

如果您使用的是 suhosin 扩展,并且在/var/log/user.log 中尝试失败后看到类似这样的行:

suhosin[...]: ALERT - configured POST variable limit exceeded - dropped variable 'x' (attacker 'x.y.z.207', file 'some_script.php')

那么可能是这个扩展扰乱了您的请求。在这种情况下,您需要禁用或更新 suhosin 的配置,例如/etc/php5/conf.d/suhosin.ini

更新或添加这些行:

suhosin.post.max_vars = 3000
suhosin.request.max_vars = 3000

此配置允许请求中最多有 3000 个变量。

关于php - 没有换行的 POST 失败,但换行有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com