我在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 validate()的代码;
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());
}
如您所见,这是我回显帖子数据的地方,此时数据已丢失。
有谁知道我为什么遇到这个问题以及如何解决?
最佳答案
您可能会看一下,这个家伙发现当服务器上的Negotiate出现问题时,您可以检查服务器或放置某种协商php header ,在HTTP响应中检查您的Accepts并使用它们,看看这个
看来这是safari身份验证堆栈的错误,其中
启用协商后,帖子主体会以某种方式被破坏。它
为何会发生这种情况没有任何意义,但实际上我看到了
5.1中使用身份验证的许多其他奇怪行为。很多时间,
但并非总是如此,尝试时会收到多个密码提示
验证 child 请求页面制作的(css / js / img)。一世
不要以为这是IIS的错误,因为其他所有浏览器(甚至是5.0)
完全可以,而且应该正确实现NTLM堆栈,
长期以来一直保持稳定...除非最近的Windows更新
在那个 Realm 可能有所贡献...值得在
最小。在星期一,我将跟进野生动物园的人们,看看我是否可以
找到根本的问题。
谢谢
在此处链接http://forums.iis.net/t/1182376.aspx?IIS7+5+receives+empty+post+body+from+Safari+5+1+
祝好运!