У меня есть страница входа в систему, где пользователям предлагается ввести код. Я хочу посчитать, сколько раз пользователи вводят неправильный код, и, если это больше, чем 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;
?>
вам нужно сохранить значение счетчика $.
первая строка, которая говорит:
$counter = 0;
echo $counter;
это может быть преобразовано в:
if(isset($_SESSION['counter']) && $_SESSION['counter'] > 0){
$counter = $_SESSION['counter'];
}else{
$counter = 0;
}
Часть, которая говорит
$counter ++;
становиться
$counter ++;
$_SESSION['counter'] = $counter;
И затем вы можете получить к нему доступ на других страницах (если они являются php и могут обращаться к переменным сеансов).
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)
Вы можете сохранить счетчик в вашем массиве $ _SESSION и просто увеличивать значение каждый раз, когда пользователь вводит неправильный код. После достижения определенного значения вы можете сделать что-то другое в вашем коде.