【问题标题】:How to Start custom session function inside a class如何在类中启动自定义会话功能
【发布时间】:2020-09-29 10:07:59
【问题描述】:

我正在学习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

?>

请帮我解决这个问题。

【问题讨论】:

    标签: php session


    【解决方案1】:

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

    大多数情况下,如果有人访问您的页面,会话就会开始,并一直持续到用户离开页面 -> 关闭会话。

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

    要关闭会话,可以使用

     session_write_close ( void ) : bool
    

    Source

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

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

    在你的页面中

    $mevalue->init_session();
    

    【讨论】:

      猜你喜欢
      • 2011-09-13
      • 2010-10-10
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 2018-10-23
      相关资源
      最近更新 更多