我在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> </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());
}
正如您所看到的,这是我回复帖子数据的地方,此时数据已丢失。 有谁知道为什么我遇到这个问题以及如何解决它?
答案 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+
祝你好运!