简体   繁体   English

$_SESSION 登录脚本:不验证 SQL 数据库中的用户

[英]$_SESSION login script: not validating users in SQL database

My database setup is like so:我的数据库设置是这样的:

create database if not exists shop;
use shop;
create table if not exists users(
 id serial primary key,
 username varchar(20),
 password char(20));    

create table if not exists admins(
 id serial primary key,
 username varchar(20),
 password char(20));

insert into admins values(null, 'admin', SHA('touch'));

and my main problem exists with the login_process page.我的主要问题存在于 login_process 页面。

<?php
 $username = $_POST['username'];
 $password = $_POST['password'];

 $db=mysqli_connect("localhost","root","","shop")or die(mysqli_error($db));
 $q="select * from admins where username='$username' and password=SHA('$password')";
 $results=mysqli_query($db, $q)or die(mysqli_error($db));
 if(mysqli_num_rows($results) > 0)
 {
  session_start();
  $_SESSION['username']=$username;
  header("Location:index.php");
  exit(0);
 }
 else
 {
   header("Location:login.php");
   exit(0);
 }
?>

When the page tries to validate my admin, instead of the location heading to index.php, it instead stays on login.php and the admin credentials never validate.当页面尝试验证我的管理员时,而不是指向 index.php 的位置标题,而是停留在 login.php 上,并且管理员凭据永远不会验证。 The same problem persists in my login and register process pages with their respective roles.同样的问题在我的登录和注册流程页面中仍然存在。

MySQL's SHA function return 40 hex digits string. MySQL 的 SHA 函数返回 40 个十六进制数字字符串。 The password field need to handle 40 characters to make SHA works.密码字段需要处理 40 个字符才能使 SHA 起作用。

Address the issues by following通过以下方式解决问题

type session_start on the login page & declare $_SESSION variables as ''在登录页面上输入 session_start 并将 $_SESSION 变量声明为 ''

$q="select * from admins where username='$username' and password=SHA('$password')"; echo this query & run on backend,see if it returns data? echo这个查询并在后端运行,看看它是否返回数据?

So if the above query returns data then sure redirection will be on index page因此,如果上述查询返回数据,则确定重定向将在索引页面上

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM