如何在类中启动自定义会话功能



我正在学习php。

我有一个类和一个函数来启动自定义会话,如下所示, 现在,我如何在每个php页面中使用上述自定义session_start? 请帮忙。 我的代码就像

<?php
// myclass.php
class abcd{
function sec_session_start() {
$session_name = 'sec_session_id';   // I have Set a custom session name
$secure = false;  
$httponly = true;
if (ini_set('session.use_only_cookies', 1) === FALSE) {
$err='Could not initiate a safe session (ini_set)';
$err = Encryption::encode($err);        
header("Location: ../login.php?error_msg=".$err);
exit();
}
// Gets current cookies params.
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"],
//session_set_cookie_params(time()+3600,
$cookieParams["path"], 
$cookieParams["domain"], 
$secure,
$httponly);
// Sets the session name to the one set above.
session_name($session_name);    
session_start();
session_regenerate_id(true);  
}
}
?>

在这种情况下,将显示以下错误:注意:会话已启动 - 忽略 session_start((

myphp页面如下 -

<?php
// mypage.php
include_once "myclass.php";
$mevalue = new abcd;
$mevalue->sec_session_start();
code code code
?>

请帮我解决这个问题。

会话应持续整个页面访问,而不是在每个页面上更新, 例如,用户登录一次,并将其存储到会话中,因此用户无需为每个新页面或单击再次登录。

大多数情况下,会话在有人访问您的页面时开始,并一直保留到用户离开页面 ->关闭会话。

最好的方法是检查是否为此用户打开了会话,并且仅在用户没有会话时才启动会话。

要关闭会话,可以使用

session_write_close ( void ) : bool

有了这个,您可以更新代码以具有get_session函数。在此函数中,您可以检查会话是否存在并使用该会话,如果没有启动一个新会话,则可以使用该会话

class abcd{
function init_session()
{
if (!isset($_SESSION)) {
$this->sec_session_start();
}
}
function sec_session_start() {....

在您的页面中

$mevalue->init_session();

最新更新