下面是我使用SESSION功能的PHP例程。我有三个网页名称login.php,homepage.php,logout.php。 当我在login.php页面输入正确的密码和用户名时,它会将我重定向到homepage.php。在homepage.php中,它包含一个注销链接。当我点击该注销链接时,它将我重定向到login.php。这些功能绝对符合我的期望。但我现在的问题是,当我单独打开homepage.php时,它应该将我重定向到login.php。但它打开了homepage.php。我需要一个确切的条件,homepage.php只能在login.php中提交正确的数据时打开homepage.php。否则,当我直接打开homepage.php时,它应该将我重定向到login.php。但主要的是我不需要销毁会话但我可以将会话值清空为
希望你理解我的问题。提前谢谢。$ _ SESSION ['sumthing'] =='';
登录页面
<?php
include("includes/config.php");
if ($_POST['frmSubmit']) {
$strUserData = doSelectUserDetails($_POST);
if($strUserData) {
$_SESSION['SESS_UserId'] = $strUserData['user_id'];
$_SESSION['SESS_UserName'] = $strUserData['user_name'];
session_write_close();
header('Location: homepage.php');
} else {
$strMessage = 'User Name or Password is Incorrect!';
$strClass = 'Error';
}
}
?>
首页
<?php
include("includes/config.php");
if((!isset($_SESSION['SESS_UserId'])) || (($_SESSION['SESS_UserId']) == '')) {
header("location: login.php");
exit;
}
?>
注销
<?php
$_SESSION['SESS_UserName'] == '';
$_SESSION['SESS_UserId'] == '';
header("location: login.php");
exit();
?>
功能
function doSelectUserDetails($objArray)
{
$sqlSelect = "SELECT * FROM tbl_userdata WHERE user_name = '".$objArray['frmUserName']."' AND user_password = '".$objArray['frmPassword']."' ";
$strValues = SelectQry($sqlSelect);
return $strValues[0];
}
答案 0 :(得分:1)
注意:session_destroy()将重置您的会话,您将丢失所有存储的会话数据。
改为使用unset()函数:
if(isset($_SESSION['views'])) {
unset($_SESSION['SESS_UserName']);
unset($_SESSION['SESS_UserId']);
}
首页文件:
if((!isset($_SESSION['SESS_UserId'])) || (($_SESSION['SESS_UserId']) == '')) {
header("location: login.php");
exit;
} else echo $_SESSION['SESS_UserName'];
答案 1 :(得分:1)
取消设置logout.php文件的会话变量,如下所示
unset($_SESSION['SESS_UserName']);
unset($_SESSION['SESS_UserId']);
使用unset从$ _SESSION全局数组中销毁一个会话元素。
如果要销毁当前注册的所有会话变量,请使用session_unset()函数。
答案 2 :(得分:0)
我要做的是检查用户是否有会话。如果他们不重定向到登录页面:
if (session_status() == PHP_SESSION_NONE) {
header("location: login.php");
}