在一个正式项目中操作人员提交239个产品信息进行保存,但是系统却提示没有提交239个产品,于是开启错误信息,显示如下:
Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini
打印下收到的数组,实际上只拿到了112个数据。但是php.ini默认可以接收的表单变量max_input_vars 的值是1000,我连239个都提交不上去,其实原因是每个数据本身还是对象,php认为提交的对象本身一个字段也是一个表单变量。
以下为测试demo:
html:
var prddata = new Array(); for(var i = 0; i < 239; i++) { var data = { pid: 0, offer: 1, bcode: 1804071680696, thrsn: '--', pname: '', salestat: 10, issup: 0, bid: '', mid: '', } prddata.push(data) } $.post("test.php",{sid:3816,prddata:prddata}, function(data, status) { });
php:
<?php $prddata=$_POST['prddata']; var_dump($prddata);
解决方法其实非常简单,只需要将prddata的值转换为json发送到后端,这样提交只算1个表单变量,或者你可以设置max_input_vars 的最大值,但是并不推荐,max_input_vars 值太大危害就是影响内存
function objtoarr($obj){ $ret = array(); foreach($obj as $key =>$value){ if(gettype($value) == 'arr...
开启错误提示代码:ini_set("display_errors", "On"); error_reporting(E_ALL | E_STRICT);关闭错误提示代码:error_reporting(E_ALL ^&n...
首先看看以下代码:代码1:<?php $a=0.1; $b=0.7; if($a+$b==0.8) { echo "1"; } else{ echo "2"; } ?>代码2:<?php &n...
通过http推送消息给socket,socket服务再向客户端推送<?php /* * Socket推送 * 请用守护进程方式启动php msgservice.php & (socket只...
php arrayaccess 官方的说法是让你能以数组的形式访问对象,对于这种php内置接口一直不太明白有什么用,坚持多看文章,终于理解,特来分享,思路不同,更易于理解。(1).创建一个学生类,并且实现arrayaccess 接口。<?php class studen...
最近在编写windows php多线程的东西,从官网下载了PHP的线程安全版,尝试开启curl扩展extension=php_curl.dllphp -m 却提示 PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl...