另一个用户无需现有用户注销即可登录

时间:2016-08-11 18:43:52

标签: php html css session

按下后退按钮离开页面时。登录页面不应该来。因为我已经登录了!当其他用户已经登录时,其他用户如何登录!它应该要求现有用户注销,然后允许其他用户登录!示例:当我们登录Facebook时,尝试转到登录页面。它不会打开登录页面,而是打开我们的帐户,因为我们仍然登录!

帐户页码:

<?php
require 'connection.php';
session_start();
?>

<?php
if(isset($_SESSION['id']))
{
$id=$_SESSION['id'];
?>

<!doctype html>
<html>
<head></head>
<body>

<div id="content">
logged in
</div>

</body>
</html>

<?php
}
else
{
header('location:login.php');
die();
}
?>

注册码:

<?php
require 'connection.php';
session_start();
?>

<?php
if(isset($_POST['REGISTER']))
{
$user=$_POST['user'];
$email=$_POST['email'];
$pass=$_POST['pass'];

$sql = "INSERT INTO users (username,email_id,password) VALUES ('$user','$email','$pass');";

$query = mysqli_query($conn, "SELECT * FROM users WHERE email_id='".$email."'");

if(mysqli_num_rows($query) > 0)
{
echo "OOPS! This email id is already registered.";
  header ("refresh7; url=login.php");
}
else
{
if($conn->multi_query($sql) === TRUE)
{
echo 'Hello'.' '.$user.'!'.'<br>';
}}}
$conn->close();
header ("refresh:7; url=login.php");
?>

登录页面代码:

<?php
require 'connection.php';
session_start();
?>

<html>
<head></head>
<body>

<div id="left">
<h2> <a href="login.php"> <center> LOGIN </center> </a> </h2>

<form action="" method="post">

<b> Email Id: </b> <input type="email" name="email" placeholder="abc@xyz.com" required> <br> <br>
<b> Password: </b> <input type="password" name="pass" placeholder="****" required> <br> <br>

<input type="submit" value="LOGIN" name="LOGIN">
</form>

<?php
if(isset($_GET['error'])==true)
{
echo '<font color="red"> <p align="center"> username & password does not match! </p> </font>';
}
?>

</div>

<?php
if(isset($_POST['LOGIN']))
{
$email=$_POST['email'];
$pass=$_POST['pass'];

$sql = $conn->query("SELECT * FROM users WHERE email_id='$email' AND password='$pass'");

$row = $sql->fetch_array(MYSQLI_BOTH);

if($row>0)
{
$_SESSION['id'] = $row['id'];
header('location: account.php');
}
else
{
header('location:login.php?error=1');
}}
?>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

您可以添加某种会话验证,

if(isset($_SESSION['id']))
{
     ?>

     Your Logout HTML

     <?php
} else {
    ?>
    Your Login HTML.
    <?php
}

if语句将在您设置HTML会话时显示注销ID,该会话仅在您登录时设置。

如果未设置else会话,HTML部分将显示登录ID,因此您尚未登录。

您不必将其包含在每个页面上,您只需将网站拆分为多个部分,例如标题,内容和页脚,并将此代码包含在标题中,然后在主文件中使用requireinclude为您省去了必须重新编写整个部分的麻烦。

修改

您很容易SQL Injection使用MySQLiPDO'sprepared statements

答案 1 :(得分:0)

将其添加到登录页面的顶部:

if(isset($_SESSION['id'])) { 
   header("Location:account.php");}

但您需要更多身份验证。这将确保用户在尝试查看登录页面时被重定向到帐户页面。