2014-11-12 3 views
-1

사용자가 코드를 입력하라는 로그인 페이지가 있습니다. 나는 사용자가 잘못된 코드를 입력 한 횟수를 세고 싶다. 3 회 이상이면 프로세스를 다시 시작하라는 페이지를 보여 주지만 잘못된 코드를 여러 번 입력하더라도 카운터는 1을 출력한다.if/else 문 내부에서 계산하기

<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

Sidenote :이 '

+0

쿼리를 업데이트하려고하지 않습니다. else 문이 몇 번이나 전달되었는지 계산하려고합니다. – Rudi

+0

'

답변

1

$ 카운터 값을 저장해야합니다. 라고

첫번째 라인은 :

$counter = 0; 
echo $counter; 

그것은으로 변환 할 수 있습니다

$counter ++; 

가 될 말한다

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

부분

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

그리고 다른 페이지에서 액세스 할 수 있습니다 (단, php이고 세션 변수에 액세스 할 수 있어야합니다).

0

U는 $ _SESSION 배열에 카운터를 저장하고 사용자가 잘못된 코드를 입력 할 때마다 값을 증가시킬 수 있습니다. 특정 값에 도달하면 u는 코드 내에서 다른 것을 할 수 있습니다.

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 응답 (예 : html)을 보내기 전에 완료해야하는 http 헤더를 보내야하므로 세션이 시작되지 않습니다.