Как создать на странице кнопки и счетчик к ней на php+html

Хотел бы узнать, как можно создать кнопку, а рядом с ней выводить текст "Вы нажали на кнопку n раз".

<?php
$num = 0;
    if(isset($_POST['but'])){
        $num++;
        echo'Вы нажали на кнопку '.$num.' раз';
    }
?>
<form action="registration.php" method="post">
    <input type = 'submit' value = 'Жми' name='but'>
</form>

Подскажите пожалуйста, может есть какая нибудь другая функция проверяющая, нажата ли кнопка и можно ли этот пример реализовать с помощью куки/рекурсии

<?php
$num=0;
setcookie('click', $_POST['but']);
if(isset($_COOKIE['click'])){
    echo 'Вы нажали на кнопку '.$num.' раз';
    $num++;
}
?>
<form action="registration.php" method="post">
    <input type = 'submit' value = 'Жми' name='but'>
</form>

Вот попытка сделать тоже самое через куки, выводит только 0(из $num)


Ответы (1 шт):

Автор решения: nazarpunk

Зачем вам php для этих целей, если вы состояние не собираетесь на сервере хранить?

const $b = document.getElementById('b');
let value = parseInt(localStorage.getItem(`value`) ?? 0);

$b.innerText = `Нажвтий: ${value}`;
$b.addEventListener(`click`, () => {
  value++;
  $b.innerText = `Нажвтий: ${value}`;
});
<button id="b"></button>

Если нужно решение на чистом php, то можно сделать так:

<?php
declare(strict_types=1);

$num = filter_input(INPUT_COOKIE, 'clicked', FILTER_VALIDATE_INT) ?? 0;
if (!is_int($num)) $num = 0;

if (array_key_exists('but', $_POST)) {
    $num++;
    setcookie('click', $num);
}

echo 'Вы нажали на кнопку ' . $num . ' раз';
$num++;
?>
<form action="registration.php" method="post">
    <input type='submit' value='Жми' name='but'>
</form>
→ Ссылка