缺少POST数据(偶尔)

时间:2014-02-10 21:47:36

标签: php html forms post safari

有时,HTML表单无法提交任何POST数据。

表单本身没有任何问题,完全相同的表单每天提交数百次没有任何问题。

当用户抱怨我的网站功能时出现此错误。为了解决这个问题,我添加了一些电子邮件提醒,其中提供了$_GET$_POST$_SESSION$_SERVER数组的副本。由此我发现$_POST数据是空的。

我的第一个想法是一些奇怪的浏览器问题但是在网站后面运行的数据库显示,运行相同浏览器的同一个用户在错误的几分钟内成功提交了表单。

这可能是巧合,但这总是发生在Safari上。它在Safari 5.1.9上发生过几次,在Mobile Safari 7.0上发生过一次。

感谢您的帮助。


针对一些评论的一些更新:

  1. 表单中没有使用验证(假设您的意思是jQuery Validation)。
  2. 我没有使用任何Ajax。
  3. 以下是HTML表单(删除了一些格式化内容)和PHP脚本的片段。虽然,就像我说的,我很确定这不是问题,因为我有相同的用户,浏览器和设备使用的相同形式没有任何问题(在故障的几分钟内)。
  4. HTML表单(基本上用户有10个号码,他们必须输入10个号码):     

        <input type="hidden" name="type" value="329"/>
        <input type="hidden" name="code" value="0"/>    
    
        <input type="hidden" name="start[]" value="2"/>
        <input type="hidden" name="start[]" value="5"/>
        <input type="hidden" name="start[]" value="8"/>
        <input type="hidden" name="start[]" value="1"/>
        <input type="hidden" name="start[]" value="3"/>
        <input type="hidden" name="start[]" value="9"/>
        <input type="hidden" name="start[]" value="6"/>
        <input type="hidden" name="start[]" value="10"/>
        <input type="hidden" name="start[]" value="4"/>
        <input type="hidden" name="start[]" value="7"/>
    
        <input type="number" name="input[]" maxlength=4 autocomplete="off" step="any" min="0"/>
        <input type="number" name="input[]" maxlength=4 autocomplete="off" step="any" min="0"/>
        <input type="number" name="input[]" maxlength=4 autocomplete="off" step="any" min="0"/>
        <input type="number" name="input[]" maxlength=4 autocomplete="off" step="any" min="0"/>
        <input type="number" name="input[]" maxlength=4 autocomplete="off" step="any" min="0"/>
        <input type="number" name="input[]" maxlength=4 autocomplete="off" step="any" min="0"/>
        <input type="number" name="input[]" maxlength=4 autocomplete="off" step="any" min="0"/>
        <input type="number" name="input[]" maxlength=4 autocomplete="off" step="any" min="0"/>
        <input type="number" name="input[]" maxlength=4 autocomplete="off" step="any" min="0"/>
        <input type="number" name="input[]" maxlength=4 autocomplete="off" step="any" min="0"/>
    
        <input type="submit" value="Finish">
    </form>
    

    PHP文件:

    //First check the user is logged in
    if(isset($_SESSION['user_id'])){
        //Check for the POST data
        if(!isset($_POST['type'])){
            //No post data - why?!
        }
        //Do stuff...
    }
    

    希望这能清除一些事情

0 个答案:

没有答案