Php 身份验证不需要';是否从查询返回有效结果?

Php 身份验证不需要';是否从查询返回有效结果?,php,mysql,authentication,phpmyadmin,Php,Mysql,Authentication,Phpmyadmin,我正在编写代码来请求登录信息&如果有效,请跳转到另一个页面。但为什么它总是停留在登录页面? 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_

我正在编写代码来请求登录信息&如果有效,请跳转到另一个页面。但为什么它总是停留在登录页面? 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;


连接数据库也没有问题。

您使用的是
include('adminlogin.php')
if-else
语句之后。所以每次打开
adminlogin.php


要重定向页面,您也可以使用
标题

我看不到您正在重定向。。哦,终于有人使用了
准备好的语句了
。可能是因为在
结束后如果
,你又加上了“adminlogin.php”?我不知道要连接的api<代码>mysqli
根据您的另一个问题。还是事实上是PDO?这个的HTML表单在哪里?太多未知数,太多过去的问题没有被接受的答案。你应该使用标题('location:…'),而不是包含在这里。还有一个谁期待一个神奇的答案,拜拜,这是打字错误。很抱歉我修正了admin.php注释$password=sha1($username.$password);但它不适用于使用类似格式的客户登录页面。
<?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;
}
?>