2016-08-11 58 views
-2

当我按下返回按钮离开我的页面时。登录页面不应该出现。因为我已经登录了!当其他用户已经登录时,其他用户如何登录!它应该要求现有用户注销,然后允许其他用户登录!例如:当我们登录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="[email protected]" 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> 
+0

您的代码对SQL注入开放。使用参数化查询。密码也应该散列。 – chris85

+0

每个页面都必须启动会话,并且每个页面都必须检查'$ _SESSION ['id']'以知道登录是否已经执行 – RiggsFolly

+0

@Confiqure请不要忘记在编辑时删除不可编辑的代码片段格式 – Will

回答

1

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

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

    Your Logout HTML 

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

if声明将显示注销HTML何时设置了您的ID会话,该会话仅在您登录时设置。

else部分会显示登录HTMLID会议没有设定,因此你还没有登录。

而不必包括它的每一页上,你可以简单地划分你的网站中的部分,例如页眉,内容和页脚,并将此代码包含在您的标题中,然后在您的主文件中使用requireinclude来节省您不得不重新编写整个部分的麻烦。

编辑

你很容易SQL Injection使用MySQLi的或PDO'sprepared statements

+0

我已将它添加到我的帐户页面上! –

0

添加到您的登录页面的顶部:

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

你虽然需要更多的认证。这将确保用户在尝试查看登录页面时被重定向到帐户页面。

+0

它工作!谢谢soooooooooooooooo多!!!!!!! –

+0

很高兴它@tanishas你可以接受答案,如果它解决了你的问题。 –

+0

我遇到了一个新问题,在我的登录页面上添加了上述代码段!在输入错误的电子邮件或密码之前,一条消息被回复为'inavlid email/passwrd'。但是现在,它不会回应任何输入错误凭证的内容,而只是刷新登录页面! –

相关问题