Здравствуйте. На сайте есть форма, находящаяся в модальном окне: поле ввода, заполняемое пользователем и кнопка отправить.
<form id="transferCase-form" action="" method="post">
<p><input class="paidtext" type="text" id="bTC" placeholder="" name="from_case" /></p>
<p><input class="btn-cr" type="submit" value="" id="transfetFrom" name="trans" /></p>
<p><input class="btn-cr" type="submit" value="" id="transfetFromAll" name="transall" /></p>
</form>
И обработчик, находится на этой же странице:
if (isset($_POST['trans'])) {
if(isset($_POST["from_case"]) && $_POST["from_case"] != "") {
$from_case = (float) htmlspecialchars($_POST["from_case"]);
unset($_POST["from_case"]);
if ($from_case <= 100):
/*операции*/
header('Location: http://cryptozep.com/dashboard/');
exit;
else: echo
"<script type='text/javascript'>
$(document).ready(function() {
if(window.location.href.indexOf('#myModal')) {
$('#myModal').modal('show');
}
});
</script>";
endif;
$from_case = 0;
}
}
else if (isset($_POST['transall'])) {
/*другие операции*/
}
В случае ошибки должно выплывать модальное окно, но после перезагрузки страницы, оно появляется снова и форма не обновляется, а отправляет данные снова.
Подскажите, пожалуйста, что нужно поменять или в какую сторону смотреть.
Обратите внимание на $from_case
, я не вижу, что вы ей присваиваете какое-то значение.
Так же, после обновления страницы, значение $_POST
не меняется. Тоесть после использования переменной, вы должны ее удалить (unset($_POST['from_case'])
)
UPDATE:
if (isset($_POST['trans'])) {
if(isset($_POST["from_case"]) && $_POST["from_case"] != "") {
$from_case = (float) htmlspecialchars($_POST["from_case"]);
unset($_POST["from_case"]);
print "<h1>from_case: ".$from_case."<h1>"; //это для проверки значения. Вдруг там что-то другое
if ($from_case <= 100):
/*операции*/
header('Location: http://');
exit;
else: echo
"<script type='text/javascript'>
$(document).ready(function() {
if(window.location.href.indexOf('#myModal')) {
$('#myModal').modal('show');
}
});
</script>";
endif;
$from_case = 0;
}
}
else if (isset($_POST['transall'])) {
/*другие операции*/
}
NEW UPDATE
Мы забыли с вами про одно правило :)) PRG - Post-Redirect-Get :) Про него можно прочитать тут: http://www.theserverside.com/news/1365146/Redirect-After-Post
Так что, работающий код вот он (я модальное окно не создавал, но вы на его закрытие повесьте событие и в нем удаляйте #myModal из адресной строки):
<!doctype>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<script type='text/javascript'>
$(document).ready(function() {
if(window.location.href.indexOf('myModal') > 0) {
alert("Modal");
}
});
</script>
<?php
if (isset($_POST['trans'])) {
if(isset($_POST["from_case"]) && $_POST["from_case"] != "") {
$from_case = (float) htmlspecialchars($_POST["from_case"]);
if ($from_case <= 100):
/*операции*/
header('Location: /test.php');
exit;
else:
header('Location: /test.php#myModal');
exit;
endif;
$from_case = 0;
}
}
else if (isset($_POST['transall'])) {
/*другие операции*/
}
?>
<form id="transferCase-form" action="" method="post">
<p><input class="paidtext" type="text" id="bTC" placeholder="" name="from_case" /></p>
<p><input class="btn-cr" type="submit" value="Trans" id="transfetFrom" name="trans" /></p>
<p><input class="btn-cr" type="submit" value="Trans All" id="transfetFromAll" name="transall" /></p>
</form>
</body>
</html>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть у меня строка, например "Рога и копыта отзывы"мне необходимо средствами PHP получить из нее строку без слова "отзывы"
Добрый деньИзучаю laravel, пробую сделать простой дашборд, у которого есть несколько страничек с таблицами и графиками
Есть таблица учета товара где есть возможность продать товар в нужном количествеПроблема в том что input type text с одинаковыми классами и именами