php - 谁能帮我充分利用这段代码(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!";
}
}
?>
解决方案
推荐阅读
- xcode - 由于 AudioFileID,无法在 Xcode 上编译它
- python-3.x - Numpy将数组减少到给定的形状
- asp.net-core - 使用 .Net Core 中的 PKCE 和 Okta 从 Swagger UI 连接 OpenID
- amazon-web-services - 如何从特定的 AWS 代码提交账户克隆分支
- spring-cloud - Spring Cloud Load Balancer 中基于上下文的部署 Vip 地址
- python-3.x - 如何使用 Apache2 和 Mod-WSGI 运行 Flask
- javascript - 如何将“隐藏”属性添加到现有 HTML 5 元素,然后将其从现有 HTML 5 元素中删除?
- java - 检查字符串是否按字母顺序排列
- node.js - express-validator :如何检查电子邮件 ID 数组?
- docker - 使用不同的文件运行 docker-compose up 会启动相同的数据库