2016-12-07 3 views
-1

Ich schrieb Code um Login-Informationen zu fragen & valid it, springe zu einer anderen Seite, wenn es gültig ist. Aber warum bleibt es immer auf der Login-Seite? Index.php:Authentifizierung gibt kein gültiges Ergebnis von Abfrage zurück?

<?php 
session_start(); 
require('../model/database.php'); 
require('../model/admin_db.php'); 

$action = filter_input(INPUT_POST, 'action'); 

if ($action === NULL) { 

    $action = filter_input(INPUT_GET, 'action'); 

    if ($action === NULL) { 
     $action = ''; 
    } 
} 

if(!isset($_SESSION['is_valid_admin'])){ 
    $action = 'get_admin'; 
} 
switch($action){ 
    case 'get_admin': 
     $username = filter_input(INPUT_POST, 'username'); 
     $password = filter_input(INPUT_POST, 'password'); 
     echo $username; 
     echo $password; 
     echo is_valid_admin_login($username, $password); 

     if (is_valid_admin_login($username, $password)){ 
      $_SESSION['is_valid_admin']=true; 
      include ('admin_menu.php'); 
     } 
     else { 
      $login_message = 'you must login to view this page.'; 
      include ('adminlogin.php'); 
     } 

    break; 

admin_db.php:

<?php 
function is_valid_admin_login($username, $password) { 
    global $db; 
    $password = sha1($username . $password); 
    $query = 'SELECT username FROM administrators 
      WHERE username = :username 
          AND password = :password'; 

    $statement = $db->prepare($query); 
    $statement->bindValue(':username', $username); 
    $statement->bindValue(':password', $password); 
    $statement->execute(); 
    $valid = ($statement->rowCount() == 1); 
    $statement->closeCursor(); 
    return $valid; 
} 
?> 

Und es gibt kein Problem mit Datenbank verbinden.

+0

Ich sehe Sie nicht umleiten .. Oh, und * endlich * jemand, der 'vorbereitete Aussagen' verwendet. – Nytrix

+0

vielleicht, weil Sie "adminlogin.php" wieder nach dem "Ende if" hinzufügen? – Jeff

+0

Ich kenne die API nicht, mit der ich mich verbinden kann; 'mysqli_' wie eine andere Ihrer Fragen. oder ist es tatsächlich PDO? und wo ist das HTML-Formular dafür? zu viele Unbekannte, zu viele Fragen in der Vergangenheit ohne akzeptierte Antworten. –

Antwort

0

Sie verwenden include ('adminlogin.php'); nach if else Anweisung. Also jedes Mal, wenn dies geöffnet wird adminlogin.php.

Und um die Seite umzuleiten, können Sie auch Header verwenden.

+0

oops, das ist Tippfehler. Es tut uns leid. Es sollte nicht da sein. – Jasmine

+0

Ich reparierte diese admin.php auskommentieren $ password = sha1 ($ username. $ Password); aber es funktioniert nicht für Kunden Login-Seite, die ähnliche Format verwenden. – Jasmine

+0

und Header funktioniert nicht. – Jasmine

Verwandte Themen