我知道需要
一些安全性的登录脚本,一旦它起作用,我就会这样做,我可以登录,直到我将会话信息添加到管理页面顶部,然后显示登录.php或得到浏览器错误太多重定向循环。
需要登录b.php 是这个文件名
<?php
//calling connection to database
include "connection.php";
//start session
//session_start();
//if user posts for called login
if(isset($_POST['login'])){
//declaring variables for user input and using escape string to protect php scripts
$user = mysqli_real_escape_string($dbconn,$_POST['user']);
$pass = mysqli_real_escape_string($dbconn,$_POST['pass']);
//select from users table where user input matches un and pw
$sel_user = "SELECT * from users where un='$user' AND pw='$pass'";
//put content held in sel_user into variable run_user
$run_user = mysqli_query($dbconn, $sel_user);
//use run_user counting rows and save in check_user
$check_user = mysqli_num_rows($run_user);
//if content row numbers greater than 0
if($check_user>0)
{
//create session named username that is equal to content of $user
$_SESSION['user']=$user;
//display admin main page
header('Location: ../adminmain.php');
}
else {
//display log in error page
header('Location: ../loginerror.php');
}
}
//close database connection
mysqli_close($dbconn);
?>
管理页面顶部的会话,其中有很多注释,因为尝试的次数多了!管理员.php是这个文件名
<?php
session_start();
include 'includes/loginrequiredb.php';
if(!isset($_SESSION['user'])==' '){
header("location: login.php");
//}else {
//session_destroy();
//header("location: adminmain.php");
//die();
}
?>
这种说法永远行不通。
您正在检查 $_SESSION 中是否存在"用户"(真或假)== ' '。真或假永远不会 == ' ',因此您将始终重定向到您的其他脚本。
if(!isset($_SESSION['user'])==' '){
将其更改为:
if(!isset($_SESSION['user'])){
常规工作流应如下所示:
- 用户点击登录页面
- 用户提交凭据 -> 发布给自己
- 登录页面检测已输入凭据并对其进行验证
- 有效凭据将用户发送到"admin"脚本(并且每次调用都需要重新验证凭据)
- 无效的凭据会将用户发送回登录页面。