Php 在if/else语句中计数
我有一个登录页面,要求用户输入代码。我想计算用户输入错误代码的次数,如果超过3次,则显示一个页面,告诉他们重新启动进程,但我的计数器仅输出1,即使我多次输入错误代码Php 在if/else语句中计数,php,jquery,mysql,database,counter,Php,Jquery,Mysql,Database,Counter,我有一个登录页面,要求用户输入代码。我想计算用户输入错误代码的次数,如果超过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
<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值 第一句话是谁说的:
$counter = 0;
echo $counter;
它可以转换为:
if(isset($_SESSION['counter']) && $_SESSION['counter'] > 0){
$counter = $_SESSION['counter'];
}else{
$counter = 0;
}
说
$counter ++;
变成
$counter ++;
$_SESSION['counter'] = $counter;
然后,您可以在其他页面上访问它,只要它们是php并且可以访问会话变量。U可以在$\U会话数组中保存一个计数器,只要用户输入错误的代码,就可以增加该值。达到某个值后,您可以在代码中执行不同的操作。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响应之前完成,例如htmlSidenote:您需要将其分开,我不想更新查询。我正在计算else语句被传递了多少次。那么