通过php站点中的页面处理$ _SESSION

时间:2016-02-25 15:11:07

标签: php session

我用Google搜索来解决我的问题,但任何网站都以不同的方式解释我的问题,所以我感到非常困惑!

我以这种方式实现了一个php网站。

的index.php:

在此页面中,我从登录表单中获取用户名和密码,并在检查用户是否确实存在后,我将首先将它们保存在变量中并在会话之后。

$_SESSION['user']=$user;
$_SESSION['psw']=$psw;

现在我只会在用户被登录时显示此页面,所以我会做一些这样的事情:

first_page.php:

   <?

   if(isset($_SESSION['user']) && isset($_SESSION['user'])!="" && isset($_SESSION['psw']) && isset($_SESSION['psw'])!=""{

// show page site
}
else
  // go to index.php

?>

并在网站的任何页面中插入此块if-else。

这个程序是正确的吗? 我需要在任何页面中或在index.php中引入session_start(); 多长时间$_SESSION['user']$_SESSION['psw'](过期)?

由于网站需要$_SESSION['user']许多功能,我需要确保当用户浏览网站时,会设置这些会话变量。

感谢您的支持,我对此感到非常困惑。

3 个答案:

答案 0 :(得分:2)

您必须在使用session_start()的每个页面中添加$_SESSION。它会在您离开网站时到期。

答案 1 :(得分:0)

不在会话中存储密码,如果不更改会话中的会话处理程序数据,则将其作为纯文本存储在Web根目录之外。这意味着任何有权访问系统的人都可以读取会话数据。

了解是否发生了有效登录的方法是: $sql = "select id where username = 'username' and password = 'hashedpassword'"

如果返回id,则表示用户已成功登录并在会话中存储该ID。然后验证如果设置了ID,会话是否继续。 请记住,在提升权限后,建议更改会话ID,这可以通过session_regenerate_id()来完成,以增加对会话固定攻击的保护。

在每个脚本开头尝试从会话中读取数据时,使用session_start()session_destroy()删除该会话中存储的所有数据(通常是注销)

答案 2 :(得分:0)

如果我在任何页面的顶部介绍以下脚本,可能是一个很好的解决方案吗?或者有什么问题?

if ((isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) || $_SESSION['iduser']==NULL) { 

// last request was more than 30 minutes ago 
session_unset(); 
session_destroy(); // destroy session data in storage 
echo "<script>location.href='index.php'</script>"; //redirect the user to index page
} 

$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp 
/* Code for the rest of my page HTML*/

(从这里开始:How do I expire a PHP session after 30 minutes?