我在页面上进行了验证检查,以便只能通过登录访问它,但是问题是,登录标头后将其重定向到登录页面,这意味着登录检查失败。我输入了正确的凭据,并且我已经开始了会话,但是仍然不知道出了什么问题。非常感谢您的帮助。
login.php
<?php
session_start();
include("dbConnection.php");
if(isset($_POST['username']) && isset($_POST['pass']))
{
$username = $_POST['username'];
$password = $_POST['pass'];
$query = mysql_query(" SELECT * FROM login WHERE username='$username' and password='$password'");
if($username == 'alex' && $password == 'lion'){
header('Location: alex.php' );
exit();
}
?>
<form class="login100-form validate-form" method="POST">
<span class="login100-form-title p-b-37">
Sign In
</span>
<div class="wrap-input100 validate-input m-b-20" data-validate="Enter username or email">
<input class="input100" type="text" name="username" placeholder="username or email">
<span class="focus-input100"></span>
</div>
<div class="wrap-input100 validate-input m-b-25" data-validate = "Enter password">
<input class="input100" type="password" name="pass" placeholder="password">
<span class="focus-input100"></span>
</div>
<div class="container-login100-form-btn">
<button class="login100-form-btn">
Sign In
</button>
<?php if(isset($_GET['error'])==true){
echo'<strong><p align ="center" id="wrong" color ="red">Wrong Username or Password !!</p></strong>';
}?>
</div>
alex.php
<?php
ob_start();
include("dbConnection.php");
if(!isset($_SESSION['username'])){
header("location:login.php");
}
?>
答案 0 :(得分:1)
您的第一个问题是您必须在“ alex.php”文件中启动会话。 在代码顶部添加以下行。
session_start();
第二个问题是,您正在使用变量 $ _ SESSION ['username'] 验证用户是否已登录。 但是,在成功验证之后,您无需在“ login.php”文件中设置 $ _ SESSION ['用户名'] 。
所以您的代码必须是这样的:
if($username == 'alex' && $password == 'lion'){
$_SESSION['username'] = 'alex';
header('Location: alex.php' );
exit();
}
在注销功能中,不要忘记取消设置会话变量
unset($_SESSION['username']);
答案 1 :(得分:1)
在第二个if block
中,您没有为$_SESSION['username']
设置值,而alex.php需要此值来进一步验证登录名。
紧接着:
if($username == 'alex' && $password == 'lion'){
插入以下语句:
$_SESSION['username'] = $username;
。
在alex.php中,您需要做session_start();
作为访问$_SESSION['username']
的第一条语句。
再次在alex.php中,使用以下代码,以便如果引荐来源者页面不是login.php,它将重定向到login.php。
紧接着:
ob_start();
添加:
if(basename($_SERVER['HTTP_REFERER']) != 'login.php'){
header('Location: login.php' );
exit();
}