如何不让用户在不注销的情况下返回 login.php?
Posted
技术标签:
【中文标题】如何不让用户在不注销的情况下返回 login.php?【英文标题】:How not let user go back to login.php without logging out? 【发布时间】:2019-12-24 18:16:36 【问题描述】:我还有一个 login.php、loginer.php、registration.php、register.php、logout.php、logouter.php、dashboard.php 和 menu.php 文件。 menu.html 包含在我的dashboard.php 中,因为menu.html 包含我想退出时必须单击的按钮。
我在 htdocs 中有我的项目的文件夹。在项目的文件夹中,我有一个“hu”文件夹,因为该网站目前使用的是匈牙利语。在这个“hu”文件夹中,除了dashboard.php 和menu.html 之外,我还有所有提到的.php 文件,因为这两个文件位于“注册”文件夹中,该文件夹也在“hu”文件夹中。
我有一个注册登录系统。但是当我登录时,我不需要退出登录来访问 login.php,因为我只需要单击“返回”按钮。 为什么会这样?
我已经尝试过写“session_destroy();”几乎无处不在。我没有工作。
login.php 是这样的:
<!DOCTYPE html>
<html>
<head>
<title>Bejelentkezés | LASOW Projekt</title>
<link rel="stylesheet" href="css/login.css">
</head>
<body>
<?php
include 'navbar.html';
?>
<div class="main">
<h1>Bejelentkezés</h1>
<form action="loginer.php" method="POST">
<label for="">Email:</label><br>
<input type="text" name="emailaddress"><br>
<label for="Jelszó:">Jelszó:</label><br>
<input type="password" name="password"><br>
<input name="login" type="submit" value="Belépek">
</form>
</div>
</body>
</html>
loginer.php 是这样的:
<?php
session_start();
include '../connect.php';
$error = ""; //Variable for storing our errors.
if(isset($_POST["login"]))
if(empty($_POST["emailaddress"]) || empty($_POST["password"]))
$error = "Mindkét mező kitöltése kötelező!";
else
// Define $username and $password
$emailaddress=$_POST['emailaddress'];
$password=$_POST['password'];
// To protect from mysql injection
$emailaddress = stripslashes($emailaddress);
$password = stripslashes($password);
$emailaddress = mysqli_real_escape_string($conn, $emailaddress);
$password = mysqli_real_escape_string($conn, $password);
$password = md5($password);
//Check username and password from database
$sql="SELECT id,emailaddress,password FROM users WHERE emailaddress='$emailaddress' and password='$password'";
$result=mysqli_query($conn,$sql);
//$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
//email és jelszó létezése esetén folytatódik a folyamat
//Otherwise echo error.
if(mysqli_num_rows($result) == 1)
$_SESSION['emailaddress'] = $emailaddress; // Initializing Session
header("location: registered/dashboard.php"); // átirányítás a login.php-re
else
$error = "Helytelen email vagy jelszó";
?>
这是 register.php 的样子:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
if(isset($_POST["register"]))
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "lasowcompany";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if (!$conn)
die("Connection failed: " . mysqli_connect_error());
mysqli_set_charset($conn,"utf8");
//nem $POST hanem $_POST a htmlspecialchars nem enged javasrcipt kódot be írni az adatbázisba
$surname = htmlspecialchars($_POST['surname']);
$firstname = htmlspecialchars($_POST['firstname']);
$emailaddress = htmlspecialchars($_POST['emailaddress']);
$phonenumber = htmlspecialchars($_POST['phonenumber']);
$password = md5($_POST['password']);
$passwordconfirm = md5($_POST['passwordconfirm']);
if(empty($surname))
echo "A vezetéknevet meg kell adnod!";
elseif(empty($firstname))
echo "A keresztnevet meg kell adnod";
elseif(empty($emailaddress))
echo "Az email címet meg kell adnod";
elseif($password != $passwordconfirm)
echo "A megadott jelszavak nem egyeznek";
elseif(strlen($password) < 6)
echo "Minimum 6 karakteres lehet a jelszó";
elseif(empty($password))
echo "A kívánt jelszót meg kell adnod";
else
$sql = "INSERT
INTO
users
(surname,
firstname,
emailaddress,
phonenumber,
password)
VALUES
('".$surname."',
'".$firstname."',
'".$emailaddress."',
'".$phonenumber."',
'".$password."')";
if ($conn->query($sql) === TRUE)
echo "New record created successfully";
else
echo "Error: " . $sql . "<br>" . $conn->error;
$conn->close();
header('Location: dashboard.php');
/*$sql = "INSERT INTO users (surname, firstname, emailaddress, phonenumber, password, passwordconfirm)
VALUES ('".$_POST["surname"]."','".$_POST["firstname"]."','".$_POST["emailaddress"]."','".$_POST["phonenumber"]."','".$_POST["password"]."','".$_POST["passwordconfirm"]."')";
*/
?>
</body>
</html>
注销.php:
<?php
session_start();
unset($_SESSION['emailaddress']);
header("Location: logouter.php");
?>
dashboard.php:
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<style>
h2 text-align: center;
</style>
</head>
<body>
<?php
if(isset($_SESSION['emailaddress']))
include 'menu.html';
else
header("Location: ../logout.php");
exit();
?>
<h2>Üdv a LASOW rendszerében</h2>
</body>
</html>
menu.html:
<ul>
<li><span style="font-size:30px;cursor:pointer" onclick="openNav()">☰</span></li>
<li><a class="active" href="#home">Főoldal</a></li>
</ul>
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">×</a>
<a href="dashboard.php">Főoldal</a>
<a href="../lectures.php">Tudás</a>
<a href="profile.php">Profil</a>
<a href="../logout.php">Kilépés</a>
</div>
<script>
function openNav()
document.getElementById("mySidenav").style.width = "30%";
function closeNav()
document.getElementById("mySidenav").style.width = "0";
</script>
如果用户没有注销,不要让用户返回 login.php。
【问题讨论】:
在您的登录页面中有一个条件是检查用户是否已登录,然后如果他们登录则重定向到仪表板或显示登录表单 @MasivuyeCokile 我怎么能做到! 【参考方案1】:您必须在要跟踪的每个页面中使用 会话
【讨论】:
也喜欢dashboard.php? 您的文件@Erik 中包含的文件最多? 在您必须开始会话的第一页上,然后如果您的站点中有一种分层,您必须检查它,假设您必须登录的主页然后您无法访问例如,在您登录之前购买产品,因此在主页中启动会话,然后在购买产品中检查它是否已经设置以上是关于如何不让用户在不注销的情况下返回 login.php?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 Facebook 登录/注销按钮的情况下以编程方式从 Facebook SDK 3.0 注销?
您可以在不注销用户的情况下更新用户的 cookie 信息吗?
如何在不刷新页面的情况下使用 JS SDK 检测从 fb 注销