2016-11-26 1 views
0

Wenn ich auf die Seite gehe, auf der ich den Authentifizierungscode eingegeben habe, werde ich gebeten, mich vor dem Login anzumelden. Die Probleme sind, nachdem ich mich angemeldet habe, es geht nicht auf die Seite, die gehen wollte und danach klickte ich wieder auf die gleiche Seite und bat mich, sich erneut anzumelden. Habe ich hier etwas falsch gemacht?Nachdem ich mich eingeloggt habe, kann ich die Seite nicht sehen.

loginform.php

<div class="container"> 
<div class="row"> 
    <di class="col-md-4 col-md-offset-4"> 
     <fieldset> 
      <legend>Login </legend> 
      <form method="post" action="loginProcess.php"> 
       <div class="form-group"> 
       <label>User name:</label> 
       <input type="text" name="username" class="form-control" required> 
       </div> 
       <div class="form-group"> 
       <label>Password:</label><input type="password" name="password" class="form-control" required> 
       </div> 
       <div class="form-group"> 
       <input type="submit" name="submit" value="Login" class="btn btn-default pull-right"> 
      </div> 
      </form> 
      </fieldset> 
    </di> 
</div> 

loginProcess.php

<?php 
session_start(); 
include ("dbCon.php"); 


    $username = filter_has_var(INPUT_POST, 'username') ? $_POST['username']: null; 
    $passWD = filter_has_var(INPUT_POST, 'password') ? $_POST['password']: null; 

     $sql = "SELECT passwordHash FROM te_users WHERE username = ?"; 
     $stmt = mysqli_prepare($conn, $sql);  

     mysqli_stmt_bind_param($stmt, "s", $username); 
     mysqli_stmt_execute($stmt); 
     mysqli_stmt_bind_result($stmt, $passWDHash); //Get the password hash from the query results for the given username and store it in the variable indicated 

     if(!empty($username)){ 
      if(!empty($passWD)){ 
       if (mysqli_stmt_fetch($stmt)) { //Check if a record was returned by the query. 
        if (password_verify($passWD,$passWDHash)){ 
         $username = $_SESSION['username']; 
         $login = $_SESSION['login']; 
         $_SESSION['login'] = true; 
         header("location:index.php"); 
        } 
        else 
        { 
         echo "<p>Sorry, we don't seem to have that password.</p>"; 
        } 
       } 
       else { 
        echo "<p>Sorry, we don't seem to have that username.</p>"; 
       } 
      } 
      else { 
       echo "<p>Please enter the password.</p>"; 
      } 
     } 
     else { 
      echo "<p>Please enter the username.</p>"; 
     } 


    mysqli_stmt_close($stmt); 
    mysqli_close($conn); 

?> 

andereseite.php

dies ist der Code, der für die Authentifizierung verwenden

if(empty($_SESSION['logged_in'])) 
{ 
    header('Location:login.php'); 
     exit; 
} 
else 
{ 

} 
+1

starten die Sitzung überall –

+1

und es gibt einen Tippfehler hier '' –

+0

... und noch ein Tippfehler verwenden möchten ' ' –

Antwort

1

Sie Dinge tun In dem Abschnitt, der die erfolgreiche Anmeldung registriert, falsch herum und einen anderen $SESSION variablen Namen als den, den Sie in Ihrem überprüfen, ist der angemeldete Code.

   if (password_verify($passWD,$passWDHash)){ 

        //$username = $_SESSION['username']; 
        //$login = $_SESSION['login']; 
        //$_SESSION['login'] = true; 

        $_SESSION['username'] = $username; 
        $_SESSION['logged_in'] = true; 

        header("location:index.php"); 
       } else { 
        echo "<p>Sorry, we don't seem to have that password.</p>"; 
       } 

Denken Sie auch an die Sitzung in jedem Skript zu starten, der die Sitzung

<?php 
session_start(); 

if(empty($_SESSION['logged_in'])) { 
    header('Location:login.php'); 
    exit; 
} else { 

} 
+0

Es funktioniert nicht –

+0

_Es funktioniert nicht_ Ist nicht sehr hilfreich. Was sind die Probleme jetzt? – RiggsFolly

+0

@ Sith1234Sith Haben Sie die '' und '' Bugs behoben – RiggsFolly

Verwandte Themen