2017-07-07 52 views
-2

我是php新手,尝试通过会话创建登录页面而不使用数据库,如果用户成功登录,它将被重定向到某个页面“portfolio.php”,然后会话将会15分钟后过期,但如果用户随机输入“portfolio.php”作为url,它将被重定向到登录页面,在用户登录成功后,它只应该重定向到该页面(“portfolio.php”) 这里是我的 “的login.php” 页面代码:使用会话变量的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"); 

    } 
} 

?> 

funcation.php代码:

<?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; 
} 
?> 

在此先感谢。

+0

_“将被重定向到登录页面,而是应该只在用户成功登录后重定向到该页面。“_ - 什么,你希望它只在登录页面重定向_after_ login?这没有什么意义。 – CBroe

+0

你需要更新你的解释,它的混乱。 –

+0

究竟是什么问题?登录表单在哪里?此外,'login.php'中的$ _GET [“session_expired”]行是否是一个错字? – Himal

回答

0

我已经看到你的代码... 你应该改变$login_session_duration = 10;$login_session_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)'); 
} 

?> 
+0

非常感谢你的工作。 – Shubham

+0

@Shubham no problm –

0

我看你没有在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应用程序,你可以考虑使用一个Php Framework,它可以为你处理很多东西,并关心你可能不知道的安全问题,并提供内置的更安全的用户认证。

+0

有一个安全页面,我希望人们注册给定的姓名和电子邮件ID。另外,我想验证电子邮件ID。这是我想要做的,因为我有一个要求,即用户获得页面的链接,然后只有他们可以访问它。你能帮助我吗? – Shubham

+0

你可以重新表达你的问题。 – Kruser