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