使用会话变量的PHP登录页面

使用会话变量的PHP登录页面,php,session,Php,Session,我是php新手,尝试在不使用数据库的情况下通过会话创建登录页面,如果用户成功登录,它将被重定向到某个页面“portfolio.php”,然后会话将在15分钟后过期,但如果用户随机键入“portfolio.php”作为url,它将被重定向到登录页面。它只应在用户成功登录后重定向到该页面(“portfolio.php”)。 以下是我的“login.php”页面代码: <?php session_start(); include("functions.php"); $message=""; i

我是php新手,尝试在不使用数据库的情况下通过会话创建登录页面,如果用户成功登录,它将被重定向到某个页面“portfolio.php”,然后会话将在15分钟后过期,但如果用户随机键入“portfolio.php”作为url,它将被重定向到登录页面。它只应在用户成功登录后重定向到该页面(“portfolio.php”)。 以下是我的“login.php”页面代码:

 <?php
session_start();
include("functions.php");
$message="";
if(count($_POST)>0) {
    if( $_POST["user_name"] == "admin" and $_POST["password"] == "admin-1") {
        $_SESSION["user_id"] = 1001;
        $_SESSION["user_name"] = $_POST["user_name"];
        $_SESSION['loggedin_time'] = time();  

    } else {
        $message = "Invalid Username or Password!";
    }
}
if(isset($_SESSION["user_id"])) {
    if(!isLoginSessionExpired()) {
        header("Location:portfolio.php");
    } else {
        header("Location:logout.php?session_expired=1");
    }
}
if(isset($_GET["session_expired"])) {
    $message = "Login Session is Expired. Please Login Again";
}
?>

portfolio.php代码:

<?php
session_start();
include("functions.php");
if(isset($_SESSION["user_id"])) {
    if(isLoginSessionExpired()) {
        header("Location:logout.php?session_expired=1");

    }
 }

?>
<?php
function isLoginSessionExpired() {
    $login_session_duration = 10; 
    $current_time = time(); 
    if(isset($_SESSION['loggedin_time']) and isset($_SESSION["user_id"])){  
        if(((time() - $_SESSION['loggedin_time']) > $login_session_duration)){ 
            return true; 
        } 
    }
    return false;
}
?>

funcation.php代码:

<?php
session_start();
include("functions.php");
if(isset($_SESSION["user_id"])) {
    if(isLoginSessionExpired()) {
        header("Location:logout.php?session_expired=1");

    }
 }

?>
<?php
function isLoginSessionExpired() {
    $login_session_duration = 10; 
    $current_time = time(); 
    if(isset($_SESSION['loggedin_time']) and isset($_SESSION["user_id"])){  
        if(((time() - $_SESSION['loggedin_time']) > $login_session_duration)){ 
            return true; 
        } 
    }
    return false;
}
?>


提前谢谢。

我看到您没有在
portfolio.php
文件中设置任何签入。 尝试检查会话登录是否对您创建的每个php页面有效。例如,在functions.php文件中添加会话帮助程序:

function session_helper() {
  if(isset($_SESSION["user_id"])) {
      if(isLoginSessionExpired()) {
        header("Location:logout.php?session_expired=1");
      }
      // check valid user id?
      // session is fine, let the code continue
  } else {
    // no session user_id so redirect to login or 
    // any other welcome page

    header("Location:login.php");   
  }

}
然后您可以在所有文件中使用该方法,包括
portfolio.php

<?php
    session_start();
    // the new functions.php file
    include("functions.php");
    session_helper();

    // more code
?>

如果你计划做一个PHP应用程序,你可以考虑使用一个为你处理很多东西的系统,并且关心你可能不知道的安全问题,以及提供内置的更安全的用户验证。 您应该将

$login\u session\u duration=10;
更改为
$login\u session\u duration=900;
15分钟

您的portfolio.php应该是:

<?php
session_start();
include("funcation.php");
if(isset($_SESSION["user_id"])) {
    if(isLoginSessionExpired()) {
        header("Location:login.php?session_expired=1");    
    }
 } else {
     header('Location:login/index(ur html input file)');
 }  

?>


“它将被重定向到登录页面,而只应在用户成功登录后重定向到该页面”–什么,你想让它只在登录后重定向到登录页面?这没有多大意义。你需要更新你的解释,这让人困惑。到底是什么问题?登录表单在哪里?还有,
$\u GET[“session\u expired”]
login.php中的一行输入错误?我想要一个安全的页面,只有当用户成功登录到该页面(demo.php)时,用户才能看到该页面,而不是通过键入上面给出的页面url。当会话过期时,用户应仅返回登录页面(login.php)。问题是,用户可以移回上一页,我不希望发生这种情况。是否可能在会话过期后,单击浏览器上的“后退”按钮返回该页(demo.php)不应显示?有一个安全的页面,我希望人们使用给定的名称和电子邮件ID注册。此外,我想验证电子邮件ID。这是我试图做的,因为我有一个要求,即用户获取页面链接,然后只有他们才能访问。你能帮我吗?你可以重新表述你的问题..T汉克斯:这很有用。@Shubham没问题