[英]$_SESSION login script: not validating users in SQL database
我的數據庫設置是這樣的:
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 上,並且管理員憑據永遠不會驗證。 同樣的問題在我的登錄和注冊流程頁面中仍然存在。
MySQL 的 SHA 函數返回 40 個十六進制數字字符串。 密碼字段需要處理 40 個字符才能使 SHA 起作用。
通過以下方式解決問題
在登錄頁面上輸入 session_start 並將 $_SESSION 變量聲明為 ''
$q="select * from admins where username='$username' and password=SHA('$password')";
echo
這個查詢並在后端運行,看看它是否返回數據?
因此,如果上述查詢返回數據,則確定重定向將在索引頁面上
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.