我在codeigniter中有一個php應用程序,我遇到了以下問題。 隨機提交表單時,會丟失發佈數據。 我試過以四種不同的方式訪問發佈數據。表單數據丟失
print_r($this->input->post());
print_r($_POST);
print_r(file_get_contents('php://input'));
print_r($_REQUEST);
所有這些都不返回任何內容或空數組。 這隻在使用Ipad或Iphone時纔會發生,但它已經發生在桌面Safari瀏覽器上進行了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());
}
正如您所看到的,這是我回應帖子數據的地方,此時數據已丟失。 有誰知道我爲什麼遇到這個問題以及如何解決它?
我認爲代碼中沒有任何錯誤,請檢查config.php文件,特別是csrf_protection。 – Rajnish
可能的原因可能是302或301重定向。您將表單提交至/ handleajax/email_page。如果您的web服務器或php將用戶重定向到其他位置,您將失去表單數據。當它是301永久性重定向時,大多數瀏覽器會在它們被重定向一次之前自動轉到新的位置。這只是衆多可能性中的一種,但很容易檢查。 – jan
你使用真正的iPad或iPad的模擬器? –