我有一个登录表单,用于检查输入的密码和用户名,如果正确,它将给出一条消息并使登录会话为真。但是会话不起作用。当它将您重定向到仪表板时,您将无法访问它,会话登录的值是未知的。因此,当您输入 userpass 正确时,会话不会为该时刻创建,但是当您将其重定向到另一个页面时,您的会话就消失了。
<?PHP
session_start();
// Starting session
include 'config.php';
$pass = $_POST['pass'];
$user = $_POST['user'];
if (isset($_POST['user']) and isset($_POST['pass'])){
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$result = $link->query("SELECT user FROM users2 WHERE user = '$user'");
if($result->num_rows == 0) {
echo '<script type="text/javascript">
$(document).ready(function(){
demo.initChartist();
$.notify({
icon: "pe-7s-bell",
message: "Username of password was wrong. Please try again."
},{
type: "info",
timer: 4000
});
});
</script>';
} elseif ($result->num_rows == 1){
$userpass = $link->query("SELECT pass FROM users2 WHERE user = '$user'");
$row = $userpass->fetch_assoc();
$userpasss = $row["pass"];
if ($pass == $userpasss){
echo '<script type="text/javascript">
$(document).ready(function(){
demo.initChartist();
$.notify({
icon: "pe-7s-bell",
message: "You are logged in successfully! Redirecting ..."
},{
type: "info",
timer: 4000
});
});
</script>';
$_SESSION['login'] = "true";
$_SESSION['username'] = "$user";
echo "<meta http-equiv='refresh' content=3;URL='dashboard.php' /> ";
echo $_SESSION["login"];
echo $_SESSION["username"];
// Storing session data
} else {
echo '<script type="text/javascript">
$(document).ready(function(){
demo.initChartist();
$.notify({
icon: "pe-7s-bell",
message: "Username of password was wrong. Please try again."
},{
type: "info",
timer: 4000
});
});
</script>';
}
}
}
echo $_SESSION["login"];
?>
代码中的问题在哪里?
谢谢
热情的问候
将 session_start((; 放在此页面的顶部,因为您正在全局范围内访问,以便您将获得会话值。
- 我建议您创建不同的文件以进行身份验证。
您需要
编写顶部的所有页面session_start()
登录成功后重定向到仪表板.php需要添加第一行
<?php session_start(); echo $_SESSION['login]; ?>