簡體   English   中英

$_SESSION 登錄腳本:不驗證 SQL 數據庫中的用戶

[英]$_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM