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


Handle $_SESSION through pages in a php site

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

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

索引.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。

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

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

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

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

不要在不

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

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

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

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

如果我在任何页面的顶部引入以下脚本,可能是一个很好的解决方案吗?还是出了什么问题?

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*/

(摘自这里:如何在 30 分钟后使 PHP 会话过期?