2016-12-07 155 views
-1

我在寫代碼要求登錄信息&有效,如果有效,跳轉到另一頁。但爲什麼它總是停留在登錄頁面? 的index.php:身份驗證不會返回查詢的有效結果嗎?

<?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; 
} 
?> 

而且還有與連接數據庫沒有問題。

+0

我沒有看到你重定向..哦,最後*有人使用'準備語句'。 – Nytrix

+0

也許因爲你在'end if'之後再次包含'adminlogin.php'? – Jeff

+0

我不知道該連接的api; 'mysqli_'作爲你的問題之一。或者它實際上是PDO?以及HTML格式在哪裏?太多未知數,過多的問題沒有被接受的答案。 –

回答

0

您在if else聲明後正在使用include ('adminlogin.php');。所以每次打開adminlogin.php

而要重定向頁面,您也可以使用Header

+0

哎呀,這是錯字。抱歉。它不應該在那裏。 – Jasmine

+0

我修復了這個admin.php註釋掉$ password = sha1($ username。$ password);但對於使用相似格式的客戶登錄頁面不起作用。 – Jasmine

+0

和標題不起作用。 – Jasmine