При обновлении страницы заного генерируется уникальный логин
Создал форму регистрации с уникальным логином, именем, фамилией и др. Логин генерируется как пользователь попадает на страницу регистрации, он вводит свои данные и нажимает кнопку регистрации и при обновлении страницы логин заменяется на другой. Как можно отменить перезагрузку страницы при нажатии на кнопку? Спасибо если поможете. ВОТ КОД ГЕНЕРАЦИИ ЛОГИНА:
<div>
<label for="username">Ваш логін</label>
<input type="text" name="username" value="' . (strval(bin2hex(openssl_random_pseudo_bytes(1)))) . date("Y") . (strval(bin2hex(openssl_random_pseudo_bytes(1)))) . date("d") . (strval(bin2hex(openssl_random_pseudo_bytes(1)))) . date("m") . (strval(bin2hex(openssl_random_pseudo_bytes(1)))) . '" readonly="readonly">
</div>
Ответы (1 шт):
Автор решения: midnightelf18
→ Ссылка
отправка формы без перезагрузки страницы делается с помощью ajax запроса. ajax запрос пишется с помощью javascript. к примеру для твоей формы запрос будет таким:
document.getElementById('form') // твоя форма
.addEventListener('submit', function submitOnForm(e) { // при событии submit (при отправке формы)
let xhr = new XMLHttpRequest(), // создание экземпляра объекта (объект для отправки ajax запроса)
formData = new FormData(this); // так же экземпляр объекта, в это объекте лежат данные с формы (this указывает на #form))
xhr.open(this.getAttribute('method'), this.getAttribute('action')); // первый аргумент это метод запроса (get или post), второй аргумент это путь по которому надо отправить запрос
xhr.send(formData);
e.preventDefault(); // отменяем перезагрузку страницы (или говорят, отменяем действие по умолчанию)
});
<?php
// для того чтобы удостовериться что данные дошли, как вариант
// запишем значения поля username в файл file.txt (его надо создать)
$fp = fopen("file.txt", "r+"); // Открываем файл в режиме записи
fwrite($fp, $_POST['username']); // Запись в файл
fclose($fp); //Закрытие файла
?>
<form action="index.php" method="post" id="form">
<label for="username">
<input type="text" name="username" id="username"
value='<?php
echo (strval(bin2hex(openssl_random_pseudo_bytes(1)))) .
date("Y") .
(strval(bin2hex(openssl_random_pseudo_bytes(1)))) .
date("d") .
(strval(bin2hex(openssl_random_pseudo_bytes(1)))) .
date("m") .
(strval(bin2hex(openssl_random_pseudo_bytes(1))));
?>'>
</label>
<input type="submit" id="submit">
</form>