我的数据库设置如下:
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上,管理员凭据永远不会验证。我的登录和注册过程页面中存在同样的问题及其各自的角色。
答案 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;在后端运行,看它是否返回数据?
因此,如果上述查询返回数据,那么确保重定向将在索引页
上