-1

У меня есть код активации ключа аккаунта, который отправляется на почту пользователя, но когда дело доходит до запроса в базу данных, то ничего не происходит.

Сам код:

<?php
    include('sql.php');
    include('token.php');
if (isset($_COOKIE['token'])) {
    $user = fetchUserToken($mysql, $_COOKIE['token']);
}

if (isset($_POST['key_submit'])) {
    $activate = $_POST['key'];

    if ($activate != $user['activate-email']) {
        echo 'Введённый Вами ключ не совпадает с активационным ключом!';
        exit();
    } else {
        header('Location: /');
        $db = &quot;UPDATE `accounts` SET `status` = 1 WHERE `activate-email` = :activate&quot;;
        $par = [&quot;activate-email&quot; =&gt; $activate];
        $mysql-&gt;prepare($db)-&gt;execute($par);
    }
}

?> <form action="index.php" method="post"> <h5>Письмо выслано на почту вашего аккаунта!</h5> <p>Проверяйте письмо в разделе "Спам"</p> <div class="d-flex flex-column w-100 gap-2"> <label for="newsletter1" class="visually-hidden"></label> <input name="key" type="text" class="form-control" placeholder="Активационный ключ"> <button name="key_submit" class="btn btn-primary" type="submit">Отправить</button> </div> </form>

1 Answers1

1

Скорее всего надо заменить

$par = ["activate-email" => $activate];

на

$par = [":activate" => $activate];

А в целом используйте вывод ошибок на страницу, чтобы интерпретатор показал в чём именно дело

Как и какими средствами находить ошибки в PHP коде?

  • Я использую PDO и в PDO-запросе переменная $activate будет правильно писаться :activate – Sergey3423 Jul 26 '22 at 07:24
  • @Sergey3423 Не путайте шаблон (placeholder) и переменную со значением, которое должно быть подставлено на место этого шаблона. Похожесть имени им нафиг не нужна. – Akina Jul 26 '22 at 07:30
  • @Sergey3423 ответили выше – Алексей Шиманский Jul 26 '22 at 07:32