php - 管理员登录屏幕不适用于 mysql 数据库
问题描述
即使我输入了正确的密码和数据库中的用户名,我的管理员登录屏幕也无法正常工作,它似乎并不喜欢它,任何人都可以帮助解决我的问题这是我的管理员登录代码
<?php
session_start();
include('../config/dbconn.php');
if($_SERVER["REQUEST_METHOD"] == "POST"){
$user_unsafe=$_POST['username'];
$pass_unsafe=$_POST['password'];
$user = mysqli_real_escape_string($dbconn,$user_unsafe);
$pass1 = mysqli_real_escape_string($dbconn,$pass_unsafe);
$pass=md5($pass1);
$salt="a1Bz20ydqelm8m1wql";
$pass=$salt.$pass;
date_default_timezone_set('Asia/Manila');
$date = date("Y-m-d H:i:s");
$query=mysqli_query($dbconn,"SELECT * FROM `admin` WHERE username='$user' AND password='$pass'");
$res=mysqli_fetch_array($query);
$id=$res['user_id'];
if (mysqli_num_rows($query)<1){
$_SESSION['msg']="Login Failed, User not found!";
header('Location:admin_login_page.php');
}
else{
$res=mysqli_fetch_array($query);
$_SESSION['id']=$res['user_id'];
header('Location: admin_index.php');
$_SESSION['id']=$id;
$remarks="has logged in the system at ";
mysqli_query($dbconn,"INSERT INTO logs(user_id,action,date) VALUES('$id','$remarks','$date')")or die(mysqli_error($dbconn));
}
}
?>
解决方案
你打mysqli_fetch_array
了两次电话——一次在 the 之前if
,一次在else
块中。由于查询最多应返回一行,因此第二次提取将失败。
附带说明一下,在构造 SQL 查询时不应使用字符串操作,因为这样会使代码容易受到 SQL 注入攻击。您应该考虑改用准备好的语句。
推荐阅读
- openoffice.org - OpenOffice Basic 宏与 openoffice API
- python - 如何使用python3按时间顺序在excel表或csv文件中创建新列?
- python - 在不同的饼图中为每个标签保持相同的颜色
- angular - 角材料“垫标签”不是已知元素
- java - 如何在 Java 中显示有效日期的数量?
- excel - 下拉自定义隐藏和取消隐藏
- typescript - Typescript 不相信一定会在对象中创建属性
- javascript - 如何在 jQuery/javascript 中使用 Django 查询集
- python - 应用程序与 buildpack 不兼容 - Heroku/python
- pine-script - Pine 脚本 - “内部服务器研究错误” - TradingView