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

时间:2015-10-07 09:44:44

标签: php validation session mysqli login

我的数据库设置如下:

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'));

我的主要问题是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);
 }
?>

当页面尝试验证我的管理员时,而不是指向index.php的位置,而是保留在login.php上,管理员凭据永远不会验证。我的登录和注册过程页面中存在同样的问题及其各自的角色。

2 个答案:

答案 0 :(得分:0)

MySQL的SHA函数返回40个十六进制数字字符串。密码字段需要处理40个字符才能使SHA工作。

答案 1 :(得分:-1)

按照

解决问题

在登录页面输入session_start&amp;将$ _SESSION变量声明为''

c $q="select * from admins where username='$username' and password=SHA('$password')";此查询&amp;在后端运行,看它是否返回数据?

因此,如果上述查询返回数据,那么确保重定向将在索引页