如何在php中设置登录和注销会话?

时间:2016-10-02 16:10:31

标签: php html5 session

我已经在logout.php中创建了会话和销毁会话但是如果我输入了url(http://localhost/demo/home.php)it显示loggedin.It应该在index.php上重定向或找不到显示页面。

我正在实现的目标 - 我有登录部分并且没有问题。我能够使用我的凭据登录并且页面成功重定向到home.php。从home.php我有注销链接,我点击了该页面在index.php上重定向,但如果我输入home.php显示登录.. 请帮助我。

的index.php

session_start();

$username = $_POST['username'];
 $password = $_POST['password'];

$sel_user = "SELECT * FROM admin WHERE Username='$username' and Password='$password'";
$run_user = mysqli_query($conn, $sel_user);

$check_user = mysqli_num_rows($run_user);

if($check_user>0){

echo "<script>window.open('home.php','_self')</script>";
$_SESSION['user_email']=$username;

}

else {

$msg="Username and Password is incorrect.";


}

Home.php

<h2>Home page</h2>
<a href="logout.php">logout</a>

logout.php

       <?php
         session_start();
        if(session_destroy())
                {
                header("Location: index.php");
                }
                ?>

2 个答案:

答案 0 :(得分:3)

您的home.php应检查用户是否已登录。只需在顶部添加if语句即可。

类似的东西:

if (isset($_SESSION['user_email']) == FALSE){
     header("Location: index.php");
} 

你的logout.php也只是创建会话,然后检查它是否被销毁。为此你可以:

unset($_SESSION['user_email']);

并且您的home.php只会重定向,因为此var不再被声明。

答案 1 :(得分:1)

在您的主页

if (!isset($_SESSION['user_email'])){ 
  header("Location: index.php");
}

在您的退出页面

<?php 
unset($_SESSION['user_email']);
header("Location: index.php");
?>

在mysql请求中也使用mysqli_real_escape_string($conn, $variable)以避免注入sql

$sel_user = "SELECT * FROM admin WHERE Username='".mysqli_real_escape_string($conn, $username)."' and Password='".mysqli_real_escape_string($conn, $password)."'";

在添加到数据库之前检查POST方法收到的数据。