首页 > 解决方案 > 谁能帮我充分利用这段代码(PHP、mysqli_stmt::get_result / mysqli_stmt::bind_result 和 mysqli_stmt::fetch

问题描述

这是一个多登录系统,所以当用户登录时,他们只能看到他们应该看到的内容,只有管理员可以看到所有用户的信息。

这在家里可以工作,但是当我把它带到服务器上时,由于过时的 PHP 库,它不会工作。我知道在某些时候必须更新,但它不在我的掌控之中。我希望有人可以帮助我解决这个问题。

我不能使用mysqli_stmt::get_result(因为过时的 PHP)。mysqli_stmt::bind_result任何人都可以用and帮助我充分利用这段代码mysqli_stmt::fetch吗?

在 PHP 中更新库目前不是一个选项。

<?php
    session_start();

    $conn = new mysqli("localhost","root","root","numbers");

    $msg="";

    if(isset($_POST['login'])){
        $username = $_POST['username'];
        $password = $_POST['password'];
        $password = sha1($password);
        $userType = $_POST['userType'];

        $sql = "SELECT * FROM users WHERE username=? AND password=? AND user_type=?";

        $stmt=$conn->prepare($sql);
        $stmt->bind_param("sss",$username,$password,$userType);
        $stmt->execute();
        $result = $stmt->get_result();
        $row = $result->fetch_assoc();

        session_regenerate_id();
        $_SESSION['username'] = $row['username'];
        $_SESSION['role'] = $row['user_type'];
        session_write_close();

        if($result->num_rows==1 && $_SESSION['role']=="user1"){
            header("location:user1.php");
        }
        else if($result->num_rows==1 && $_SESSION['role']=="user2"){
            header("location:user2.php");
        }
        else if($result->num_rows==1 && $_SESSION['role']=="user3"){
            header("location:user3.php");
        }
        else if($result->num_rows==1 && $_SESSION['role']=="admin"){
            header("location:admin.php");
        }
        else {
            $msg = "Username and/or password incorrect!";
        }
    }
?>

标签: phpmysqlsessionmysqli

解决方案


推荐阅读