При обновлении страницы заного генерируется уникальный логин

Создал форму регистрации с уникальным логином, именем, фамилией и др. Логин генерируется как пользователь попадает на страницу регистрации, он вводит свои данные и нажимает кнопку регистрации и при обновлении страницы логин заменяется на другой. Как можно отменить перезагрузку страницы при нажатии на кнопку? Спасибо если поможете. ВОТ КОД ГЕНЕРАЦИИ ЛОГИНА:

<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>

→ Ссылка