[英]How do I erase a login session in PHP from my website?
我目前正在一个副项目网站上工作,并尝试在 PHP 中创建基本的登录会话。 我编写的代码应该在您注销后销毁会话,如果没有会话,则将您重定向到登录屏幕。
登录表格(index2.html.php)
<?php
if(isset($_SESSION['user']))
{
header("Location: https://website.com/mike-test/main.html.php");
}
?>
<html lang="en-UK">
<head>
<!- HEAD ------------------------------------------------------------------>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/style.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/button.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/profile.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/menu.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/section.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/footer.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/subMenu.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/logIn.css" rel="stylesheet" type="text/css" media="all" />
<script src="javaScript/logIn.js"></script>
<!- To Be Changed! ->
<link rel="icon" href="_Images/Logo.ico">
<meta name="Pharmacy Project Log In" content="Pharmacy System">
<title>Pharmacy Project</title>
</head>
<!- HEAD ------------------------------------------------------->
<body>
<!- BODY ------------------------------------------------------------------>
<div id="content">
<section> <!--Main Content here-->
<img src="logo.png" id="logo" height="150" width="150">
<form action="connection3.php" method="POST">
<input type="text" name="username" placeholder="Username" required /><br />
<input type="password" name="password" placeholder="Password" required /><br />
<input type="checkbox" name="RememberMe" /><label>Remember Me</label><br />
<button><input type="submit" name="submit" class="button" /></button><br />
</form>
</section>
</div>
<footer> <!--Just a footer-->
<p>Website made by:<br /><br />
<script>document.write(document.title)</script> 2019-
<script>document.write(new Date().getFullYear())</script>. @ rights reserved</p>
</footer>
</body>
</html>
连接到数据库 - 创建会话(connection3.php)
session_start();
if(isset($_SESSION['user']))
{
header("Location: https://website.com/mike-test/main.html.php");
}
if (!empty($_POST))
{
if (isset($_POST['username']) && isset($_POST['password']))
{
// Getting submitted user data from database
$username = $_POST['username'];
$password = $_POST['password'];
$con = mysqli_connect("localhost", "pharmacy", "pharmacy", "pharmacy123");
if(mysqli_connect_error())
{
die('Connect Error(' . mysqli_connect_errno() . ')' . mysqli_connect_error());
} else
{
$result = mysqli_query($con, "SELECT username, Password FROM Employee WHERE username = '" . $username . "' AND Password = '" . $password . "'");
if(mysqli_num_rows($result) > 0)
{
$_SESSION['user'] = $username;
header('Location: https://website.com/mike-test/main.html.php');
} else
{
echo "user doesn't exist";
}
}
} else
{
echo "Both fields are required";
}
}
?>
首页(main.html.php)
<html lang="en-UK">
<?php
session_start();
echo $_SESSION['user'];
if ( isset( $_SESSION['user'] ) )
{} else {
// Redirect them to the login page
header("Location: https://website.com/mike-test/index2.html.php");
}
?>
<head>
<!- HEAD ------------------------------------------------------------------>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/style.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/button.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/profile.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/menu.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/section.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/footer.css" rel="stylesheet" type="text/css" media="all" />
<link href="css/subMenu.css" rel="stylesheet" type="text/css" media="all" />
<script src="javaScript/logIn.js"></script>
<!- To Be Changed! ->
<link rel="icon" href="_Images/Logo.ico">
<meta name="" content="Pharmacy System">
<title>Project</title>
</head>
<!- HEAD ------------------------------------------------------->
<body>
<!- BODY ------------------------------------------------------------------>
<img src="logo.png" id="logo" height="100" width="100">
<div id="profile">
<div id="text">
<p id="Name">Name</p>
<p id="status">Status</p>
</div>
<div id="image">
<img src="logo.png">
</div>
<div id="menu">
<a href="" target="_self"><button>Settings</button></a><br />
<form action="close.php" method="POST">
<button type="submit" id="logout" value="logout">LogOut</button>
</form>
</div>
</div><!-- Profile Button -->
<nav>
<ul id="mainMenu">
<li><button type="button">Counter Sales</button></li>
<li><button type="button">Dispense Drugs</button></li>
<li><button type="button">Stock Control</button></li>
<li><button type="button">Supplier Accounts</button></li>
<li><button type="button">File Maintenance</button></li>
<li><button type="button">Reports</button></li>
</ul><!--Main Menu Bar-->
</nav>
<div id="content">
<section> <!--Main Content here-->
<h1>Main Menu</h1>
<p></p>
<div class="grid">
<ul id="subMenu">
<li><button type="button">SubMenu1</button></li>
<li><button type="button">SubMenu1</button></li>
<li><button type="button">SubMenu1</button></li>
<li><button type="button">SubMenu1</button></li>
<li><button type="button">SubMenu1</button></li>
<li><button type="button">SubMenu1</button></li>
<li><button type="button">SubMenu1</button></li>
</ul><!--Main Menu Bar-->
<div style="background: blue;">
<p style="color: white;">Database here</p>
<!--This is where database-->
</div><div></div>
<div id="actions">
<button type="button">SubMenu1</button>
<button type="button">SubMenu1</button>
<button type="button">SubMenu1</button>
<button type="button">SubMenu1</button>
<button type="button">SubMenu1</button>
</div>
</div>
</section>
</div>
<footer> <!--Just a footer-->
<p>Website made by:<br /><br />
<script>document.write(document.title)</script> 2019-
<script>document.write(new Date().getFullYear())</script>. @ rights reserved</p>
</footer>
</body>
</html>
关闭.php
unset($_SESSION['user']);
//session_destroy();
echo $_SESSION['user'];
echo "session should be terminated";
//header('Location: https://webiste.com/mike-test/index2.html.php');
?>
我已经尝试通过回显$_SESSION['user']
在 close.php 和 main.html.php 中进行故障排除。 注销时,会话不会回显,因为它被破坏或未设置。 在尝试通过 url 链接手动访问 main.html.php 时, $_SESSION['user']
仍然存在。 我向很多人和讲师寻求帮助,他们都认为代码没有问题,都傻眼了。
有没有什么办法解决这一问题?
您需要在取消设置之前恢复会话
我在 PHP.Net 上从session_start发表了以下引述:
session_start() 根据通过 GET 或 POST 请求或通过 cookie 传递的会话标识符创建会话或恢复当前会话。
在您的 close.php 中,您试图在没有首先恢复站点上的会话的情况下取消设置会话,您首先需要调用session_start()
然后取消设置它。
<?php
session_start();
unset($_SESSION['user']);
echo $_SESSION['user'];
echo "session should be terminated";
?>
您的 logout.php 应如下所示
// Initialize the session
session_start();
// Unset all of the session variables
session_unset();
$_SESSION = array();
// Destroy the session.
session_destroy();
unset($_SESSION['user']);
// Redirect to login page
header("location: /");
exit();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.