表单数据丢失

时间:2014-01-24 10:02:34

标签: javascript php codeigniter post

我在codeigniter中有一个php应用程序,我遇到了以下问题。 随机提交带有Ipad的表单时,会丢失帖子数据。 我尝试过以四种不同的方式访问帖子数据。

print_r($this->input->post());
print_r($_POST);
print_r(file_get_contents('php://input'));
print_r($_REQUEST);

所有这些都不返回任何内容或空数组。 这种情况似乎只发生在使用Ipad或Iphone时,但它已经发生了一次桌面游览中的50多次测试。 在PC浏览器上大约100次测试时(firefox,chrome,IE)它没有发生,只有一次在safari中。

表单的代码;

<form id="email_report_form" name="email_report_form" method="post" accept-charset="utf-8" action="/handleajax/email_page" class="email_report_form ajaxform" onsubmit="return validate();">
    <div class="form_step_container clearfix">
        <div class="element clearfix">
            <div class="col_left">
                <label>Email: <span class="required">*</span></label>
            </div>
            <div class="col_right">
                <input type="text" name="form_email_to" id="form_email_to"  />
                <div>&nbsp;</div>
                <label>Separate multiple email addresses with a comma</label>
            </div>
        </div>
        <div class="element clearfix">
            <div class="col_left">
                <label>Your Message:</label>
            </div>
            <div class="col_right">
                <textarea name="form_email_message" cols="125" rows="5" onkeypress="return checkLength(event, this, 1000);"></textarea>
                <label>(Maximum of 1000 characters)</label>
                <br />
                <input type="hidden" name="redirect_path" id="redirect_path" value="" />
                <input type="submit" value="Send" class="btn btn-primary" />
            </div>
        </div>
    </div>
    <div class="element clearfix">
        <i>Information entered in this form will not be used for marketing purposes or passed to third parties.</i>
    </div>
</form>

onSubmit的代码验证();

function validate() {
    element = document.getElementById("form_email_to");
    addresses = element.value.split(",");
    for (var i = 0; i < addresses.length; i++) { 
        address = addresses[i].replace(/^\s*|\s*$/g, "");
        if (!validateEmail(address)) {
            alert('The email address "' + address + '" is invalid.');
            element.focus();
            return false;
        }
    }

    if (window.location.hash.length > 2) {
        $('#redirect_path').val(window.location.hash.substring(2));
    } else {
        $('#redirect_path').val(window.location);
    }

    $('#email_report').slideUp();
    return true;
}

表单提交的函数的代码;

public function email_page() {
    echo "<br/>ci<br/>";
    print_r($this->input->post());
}

正如您所看到的,这是我回复帖子数据的地方,此时数据已丢失。 有谁知道为什么我遇到这个问题以及如何解决它?

1 个答案:

答案 0 :(得分:0)

你可能看看这个,这家伙发现在服务器上打开Negotiate时出现问题,你可能会检查你的服务器或者放一些谈判php头,检查HTTP响应中的接受和和他们一起玩,看看这个

  好吧,是的,我已经完成了所有这些并且没有透露任何东西,   这就是我寻求帮助的原因......我发布了失败的请求跟踪   这是我必须要做的最明显的事情。

     

在挖掘了我的所有配置后稍微弄清楚了   server vs我们的测试服务器。谢天谢地,我有这个不同而且是   能够发现它。

     

身份验证&gt;集成的Windows身份验证&gt;高级设置

     
    

提供商&gt; [Negotiate,NTLM]&lt; - 不能正常运行身份验证&gt;集成的Windows身份验证&gt;高级设置&gt;提供者&gt;     [NTLM]&lt; - 作品

  
     

所以看起来这是safari的身份验证堆栈的错误,其中   在启用协商时,帖子身体会以某种方式被搞砸。它   没有任何意义为什么会发生,但我真的看到了   在5.1中使用身份验证的许多其他奇怪行为。很多时间,   但并非总是如此,尝试时我会收到多个密码提示   验证页面生成的子请求(css / js / img)。一世   不要认为它是IIS的一个错误,因为每个其他浏览器甚至5.0都是   完全没问题,加上NTLM堆栈应该正确实现   现在已经很长时间未受影响...除非最近的Windows更新   在那个区域可能有所贡献...值得一试   最小。星期一,我将跟进野生动物园的人们,看看我能不能   找到根本问题。

     

由于

此处链接http://forums.iis.net/t/1182376.aspx?IIS7+5+receives+empty+post+body+from+Safari+5+1+

祝你好运!