如何在没有登录的情况下确保除登录页面之外没有其他页面可以访问?

时间:2016-06-10 06:11:36

标签: php

在我的PHP应用程序中,登录页面以外的页面必须仅在用户登录时可见。 这是我登录的方式:

if($status=="ok"){ 
    session_start();
echo '<script>window.location.assign("/Annapoorna/Welcome_Page.php");</script>'; 
}else{ 
echo '<script>alert("username / password is invalid");window.history.go(-1);</script>'; 
} 

如果用户名和密码匹配,则状态为OK。

此外,如何确保未登录的用户无法访问登录页面以外的页面,即使是通过放置其他页面的直接URL?如何将此类请求重定向到登录页面?

2 个答案:

答案 0 :(得分:0)

创建一个检查会话的脚本。并且该文件应包含在除登录文件之外的所有页面中。请考虑以下示例。

文件名:session_check.php

<?php
session_start();
if(!isset($_SESSION["status"]) && $_SESSION["status"]=='')
{
   header('Location: index.php'); // your login page
   exit;
}
?>

因此,这将检查您的所有页面的状态&#39;会话是否为空。如果您的会话为空,则表示未登录使用。如果状态为OK,则表示用户已登录。

现在,在您的登录页面中,您必须按照以下条件添加条件。

<?php
session_start();
if(isset($_SESSION["status"]) && $_SESSION["status"]=='OK')
{
   header("Location: home.php");
   exit;
}
?>

现在,这将检查如果状态会话不为空,则将重定向到home.php文件(在登录文件之后)。如果session为空,那么它将保持登录页面。

答案 1 :(得分:0)

  <?php
    session_start();
    // do this in header of pages where you don't need access of all users
    if(isset($_SESSION['status']) && $_SESSION['status'] != 'OK'){
         // go and login user
         header("Location: login.php"); 
         die();

    }