gpt4 book ai didi

PHP $_POST 数组变量被截断

转载 作者:可可西里 更新时间:2023-11-01 13:28:33 25 4
gpt4 key购买 nike

我正在使用 PHP 5.3.8 和 Apache 2.0。我也在使用 Symfony 2,但这不是脚本失败的地方。我有一个带有数组变量的表单:

<form action="/app_dev.php/admin/position/create" method="post">
<input type="text" id="po_name" name="po[name]" required="required" maxlength="50">
<input type="text" id="po_role" name="po[role]" required="required" maxlength="20">
</form>

直接在 app_dev.php 文件中(从问题中排除 Symfony)我这样做:

echo file_get_contents("php://input"); // outputs: po%5Bname%5D=Developer&po%5Brole%5D=ROLE_USER
var_dump($_POST); // outputs: array(1) { ["po"]=> array(1) { ["name"]=> string(9) "Developer" } }
die();

基本上它只保留数组中的第一个变量。如果我将变量的名称从 po[role] 更改为 ba[role] 那么 $_POST 输出:

array(1) {
["po"]=> array(1) { ["name"]=> string(9) "Developer" },
["ba"]=> array(1) { ["role"]=> string(9) "ROLE_USER" }
}

我发现可能导致此问题的典型问题是由于以下 php.ini 配置,我也给你我的值是什么:

max_execution_time = 30
max_input_time = 60
max_input_nesting_level = 64
max_input_vars = 1000
post_max_size = 8M
upload_max_filesize = 2M
memory_limit = 128M

这些值似乎是合理的,我认为不会导致问题,但不能 100% 确定。

没有安装 suhosin 因为我读过它也会导致类似的问题。

它也类似于this problem但是给出的解决方案需要我重写 HttpFoundation Symfony 组件。

此外,我不想在没有数组的情况下重写表单变量(例如 po[name] 到 po_name),因为表单是由 Symfony 自动生成的,这似乎是一个基本的PHP 应该能够处理的功能。

有人知道这个问题吗?

PS:这个和here描述的问题类似.另外,问题发生在相同版本的 Suse (SUSE Linux Enterprise Server 11) 上。

最佳答案

您提出的建议对我来说效果很好。完整测试代码:

<html>
<body>
<pre>
<?php
if (isset($_POST) && !empty($_POST))
{
echo file_get_contents("php://input");
echo "\n\n";
var_dump($_POST);
}
?>
</pre>
<form action="" method="post">
<input type="text" id="po_name" name="po[name]">
<input type="text" id="po_role" name="po[role]">
<input type="submit">
</form>
</html>

具有“一”和“二”值的结果片段:

po%5Bname%5D=one&po%5Brole%5D=two

array(1) {
["po"]=>
array(2) {
["name"]=>
string(3) "one"
["role"]=>
string(3) "two"
}
}

我的PHP:

PHP Version 5.3.3-7+squeeze14
CGI/FastCGI
Apache/2.2
Suhosin Patch 0.9.9.1

这里没有问题,所以它应该可以正常工作。如果此测试代码对您不起作用,我最好的选择是您所拥有的版本中的 PHP 错误(或一些看似无关的功能中未在任何地方提及的错误)。

关于PHP $_POST 数组变量被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12684449/

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