У меня вопрос по php, а я не эксперт в php.
1. У меня есть html-страница с одной формой, включающей текстовое поле и кнопку отправки.
2. У меня есть такой статический целевой URL: https://example.com/invoice/XXXXXXXXXXXXXX
ХХХХХХХХХХХ — это просто цифры и 14 символов.
*** Мне нужно, чтобы мой клиент ввел свой 14-значный номер в текстовую форму ввода, и когда он отправит, перейдет к целевому URL-адресу. Я также хочу проверить форму ввода для ввода номеров.
Я делаю образец формы, как это, но не работает:
<form action = "https://example.com/invoice" class = "pey-form" method = "get">
<input type = "text" id = "peyid" name = "peyid" oninput = "this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1');" maxlength = "14" ><br><br>
<input type = "submit" value = "submit">
</form>
Что я могу сделать?
Можно отправить скрипт php для проверки/подтверждения ввода, а затем перенаправить на нужную страницу/URL
как я могу это сделать? я не настолько эксперт






Как сказал Хассан, вы можете сделать это только с помощью javascript. Это перенаправит на URL-адрес, который вы хотели.
document.querySelector("form").onsubmit = function(){
this.setAttribute("action",this.getAttribute("action")+"/"+document.querySelector("[name=peyid]").value);
}
Например
Если document.querySelector("[name=peyid]").value = 12345678901234 URL будет выглядеть https://example.com/invoice/12345678901234?peyid=12345678901234
Поэтому, если вам просто нужно перенаправить на этот URL-адрес, вам даже не нужна форма
<input type = "text" id = "peyid" name = "peyid" oninput = "this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1');" maxlength = "14" ><br><br>
<input type = "button" value = "submit">
<script>
document.querySelector("[type=button]").onclick = function(){
location.href = `https://example.com/invoice/${document.querySelector("[name=peyid]").value}`;
}
</script>
Спасибо, вторая часть меня тоже устроила. как я могу установить условие для пустого текстового поля, которое выдает ошибку или не работает?
Вы можете просто использовать if else, чтобы сделать это. лайк if (value != "") location.href = "url"; else alert("error");
<script> document.querySelector("[type=button]").onclick = function(){ if ("[value != "") location.href = example.com/invoice/${document.querySelector ("[name=peyid]").value}; else alert("Пожалуйста, заполните поле"); } </script> Я установил это условие, но оно не работает
Вы объявили value как document.querySelector("[name=peyid]").value? Это должно работать document.querySelector("[type=button]").onclick = function(){ let value = document.querySelector("[name=peyid]").value; if (value != ""){ location.href = example.com/invoice/${value}; } else{ alert("Please Fill The Box"); } }
Использование PHP — чтобы получить значение form, проверить его, применить к URL-адресу и перенаправить клиента в это место, используйте $_POST , preg_match() , интерполяцию строк и заголовок ().
/счет-фактура/index.php:
<?php
if ( isset($_POST['peyid']) && preg_match("/^\d{14}$/", $_POST['peyid']) ) {
header("Location: http://www.example.com/invoice/{$_POST['peyid']}");
exit;
}
?>
<html><head><title>oops</title></head><body>An error occurred.</body></html>
В этом случае это не имеет ничего общего с PHP, используйте javascript для прослушивания отправки формы и при отправке добавьте входное значение к URL-адресу действия формы.