已经启动的PHP会话

use*_*702 75 php session

在我的PHP代码中,如果会话已经启动,并且我尝试启动一个新会话,我会收到以下通知:

注意:会话已经启动 - 忽略session_start()

我怎么能避免这个?

Val*_*kov 222

尝试

<?php
    if(!isset($_SESSION)) 
    { 
        session_start(); 
    } 
?>
Run Code Online (Sandbox Code Playgroud)


Jua*_*tés 28

如果你想要一个新的,那么session_destroy()在开始之前做.要在启动之前检查它是否已设置,请致电session_status():

$status = session_status();
if($status == PHP_SESSION_NONE){
    //There is no active session
    session_start();
}else
if($status == PHP_SESSION_DISABLED){
    //Sessions are not available
}else
if($status == PHP_SESSION_ACTIVE){
    //Destroy current and start new one
    session_destroy();
    session_start();
}
Run Code Online (Sandbox Code Playgroud)

我会避免检查全局$_SESSION,而不是 ,我呼吁的session_status()方法,因为PHP明确实现此功能:

通过新函数session_status公开会话状态这是(PHP> = 5.4.0)


小智 8

session_status() === PHP_SESSION_ACTIVE ?: session_start();
Run Code Online (Sandbox Code Playgroud)

封闭式游戏


Cod*_*Spy 5

仅当您想破坏上一个会话时:

<?php
    if(!isset($_SESSION)) 
    { 
        session_start(); 
    }
    else
    {
        session_destroy();
        session_start(); 
    }
?>
Run Code Online (Sandbox Code Playgroud)

或者你可以使用

unset($_SESSION['variable_session _data'])
Run Code Online (Sandbox Code Playgroud)

销毁特定的会话变量。