@chehol43621

Как сделать кнопку генерации пароля?

Есть страница которая при обновлении генерирует пароль\купон. Нужно чтоб когда человек первый раз зашел на эту страницу, чтоб там было пустое поле и при нажатии кнопки "Сгенерировать пароль" Он появлялся и сохранялся
61dd698151c60386414330.png
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 2
@karminski
Senior React.JS Developer
Это проще реализовать на JS. PHP тут особо не нужен, только если вы хотите генерировать пароль сервером, что в принципе не нужно. Вешаете обработчик события onClick на кнопку, в обработчике пишите функцию генерации пароля на JS (ищите в гугле - их там полно).
Ответ написан
Immortal_pony
@Immortal_pony Куратор тега PHP
<?php
/* Функция для генерации купона */
function generateCoupon() {
    return (object)[
        'id' => uniqid(),
        'code' => random_int(100000, 999999)
    ];
}

/* Для примера сохранять будем в сессию, а для этого первым делом убедимся что она запущена */
if (!session_id()) {
    session_start();
}

/* Обрабатываем отправку пользователем формы - генерируем и сохраняем купон */
if ($_SERVER['REQUEST_METHOD'] === "POST") {
    $_SESSION['coupon'] = generateCoupon();

    /*
     * После успешного сохранения перенаправляем пользователя на эту же страницу
     * В данном конкретном примере у нас одна страница и без этого шага при обновлении страницы браузер предпримет попытку перепослать форму при обновлении страницы
     * В более реальном коде сохранением будет заниматься отдельный обработчик и подобный код поможет вернуть пользователя обратно на страницу с формой/данными купона
     */
    header("Location: {$_SERVER['REQUEST_URI']}"); 
    die();
}

/* Вытаскиваем сохранённый купон, если таковой имеется */
$coupon = $_SESSION['coupon'] ?? null;
?>

<?php if (empty($coupon)) { ?>
    <form method="POST">
        <button>Сгенерировать купон</button>
    </form>
<?php } else { ?>
    <span>Ваш купон: "<b><?= $coupon->code ?>"</b> успешно добавлен, его ID = <?= $coupon->id ?>
<?php } ?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы