我是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");
}
}
?>
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 :(得分: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来处理很多东西并关心您可能不知道的安全问题,并提供内置的更安全的用户身份验证。
答案 1 :(得分: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)');
}
?>