zoukankan      html  css  js  c++  java
  • php 表单post提交大量数据发生数据丢失或减少的解决方法

    最近在项目中,出现一个奇怪的现象,有一个大form里面有上千个input,提交的时候,老是发现post过来的数据不完整,一开始还怀疑是html 表单名称有冲突,排除掉了。
    然后,网上找了一堆,php.ini 的post_max_size和upload_max_filesize都设置了很大的值,没用,nginx的client_max_body_size 500m;加到了那么大的值,也没用。
    最后终于google到办法:原来PHP从5.3.9开始增加一个变量 max_input_vars 用来限制提交的表单数量

     该值默认情况下是1000 , 不能满足有1000个以上输入项的需求,所以得在php.ini 里面加上更大的值如:
    max_input_vars = 5000,重启服务器。

    如何避免这样的问题

    1. 自然是想办法增加 max_input_vars 的大小,但这样有个难以逃避的问题,就是前端传过来数据的个数你是没办法知道应该是多少的
    2. 减少 post 的字段,先 js json_encode 一下,再用一个大字段传过来
    3. 使用 post 的 body 将数据传过来;在 php 端使用 file_get_contents('php://input') 来获取之后在 json_decode;我觉得这中方法比较可取,因为 restful 设计里面就采用的这种方法。
  • 相关阅读:
    POJ1942-Paths on a Grid
    CodeForces 245C-Game with Coins
    codeforces 244B-Undoubtedly Lucky Numbers 搜索
    URAL
    HDU-1134 卡特兰数+java大数模板
    素数线性筛
    KMP讲解
    bzoj 3143: [Hnoi2013]游走
    bzoj 3238: [Ahoi2013]差异
    bzoj 2208: [Jsoi2010]连通数
  • 原文地址:https://www.cnblogs.com/-mrl/p/14273146.html
Copyright © 2011-2022 走看看