У меня есть php-приложение в codeigniter, и у меня возникает следующая проблема. При отправке формы с Ipad в случайном порядке она потеряет данные для сообщения. Я попытался получить доступ к данным сообщения четырьмя различными способами.Данные формы теряются
print_r($this->input->post());
print_r($_POST);
print_r(file_get_contents('php://input'));
print_r($_REQUEST);
Все из которых не возвращают ничего или пустого массива. Это происходит только при использовании Ipad или Iphone, однако это произошло. Однажды из 50+ тестов на сафари на рабочем столе. При тестировании в браузере ПК примерно 100 раз (firefox, chrome, IE) это не произошло, только один раз в сафари.
Код формы;
<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. Если ваш веб-сервер или php перенаправляет пользователя в другое место, вы потеряете данные формы. Когда это 301 постоянное перенаправление, большинство браузеров автоматически перейдут в новое место после того, как они были перенаправлены один раз раньше. Это всего лишь одна из многих возможностей, но ее легко проверить. – jan
Используете ли вы настоящий ipad или симулятор ipad? –