Подсчет внутри оператора if / else

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

<div class="container"><div class="alert alert-success" role="alert" align="center">
<p>A code has been sent to your email</p>
<p>Please consult your email to proceed with the login</p>
</div>

<form class="form-signin"  method="post">
<h2 class="form-signin-heading">Enter code</h2>
<input type="hidden" name="partnerEmail" value="<?php echo $_POST['partnerEmail']; ?>">
<input class="form-control" type="text" name="partnerCode" placeholder="Code">
<button class="btn btn-lg btn-primary btn-block" type="submit">Accept</button>

</form>

</div> <!-- /container -->

<?phpsession_start();echo $_SESSION['partnerEmail'];?>

<div class="container">

<?php
include_once "conn.php";

$partnerCode = $_POST['partnerCode'];
$partnerEmail = $_SESSION['partnerEmail'];

$sql = "SELECT * FROM partners WHERE partner_email='$partnerEmail' AND
partner_login_code='$partnerCode' AND partner_active ='yes'";$counter = 0;
echo $counter;

$result = $conn->query($sql);

if (mysqli_num_rows($result)>0){
echo '<div class="alert alert-success" role="alert" align="center">
<p>Congratz - You logged in successfully!</p>
</div>';}
else
{
echo '<div class="alert alert-danger" role="alert" align="center">
<p>ERROR - Please consult your email for the correct code!</p>
</div>';

$counter ++;
echo $counter;

?> <script> $(".alert").effect("shake");</script> <?php
}

echo $counter;
?>

-1

Решение

вам нужно сохранить значение счетчика $.

первая строка, которая говорит:

$counter = 0;
echo $counter;

это может быть преобразовано в:

if(isset($_SESSION['counter']) && $_SESSION['counter'] > 0){
$counter = $_SESSION['counter'];
}else{
$counter = 0;
}

Часть, которая говорит

$counter ++;

становиться

$counter ++;
$_SESSION['counter'] = $counter;

И затем вы можете получить к нему доступ на других страницах (если они являются php и могут обращаться к переменным сеансов).

1

Другие решения

Php не имеет статуса. Вы перезаписываете счетчик каждый раз, когда страница загружается.
Вместо этого сохраните счетчик в сессию:

//$counter = 0; this is overwritting, replace with:
$_SESSION['counter'] = isset($_SESSION['counter']) ? $_SESSION['counter'] : 0;
//assigned by reference, changes to $counter will change $_SESSION['counter'] also
$counter = &$_SESSION['counter'];

Как и выше, вы также, похоже, начинаете сеанс после вывод html. Это не будет работать, так как для запуска сеанса требуется отправка заголовка http, что необходимо сделать перед отправкой ответа http (например, html)

1

Вы можете сохранить счетчик в вашем массиве $ _SESSION и просто увеличивать значение каждый раз, когда пользователь вводит неправильный код. После достижения определенного значения вы можете сделать что-то другое в вашем коде.

0
По вопросам рекламы [email protected]