Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数session\u destroy终止/不终止会话数组_Php_Session - Fatal编程技术网

Php 函数session\u destroy终止/不终止会话数组

Php 函数session\u destroy终止/不终止会话数组,php,session,Php,Session,以下是3个php脚本: 设置会话的第一个文件: <?php session_start(); // store session data $_SESSION["username"] = "joshmathews" ; $_SESSION["name"] = "josh" ; ?> 第二个脚本,我首先输出代码,然后销毁会话,然后再次启动会话: <?php session_start(); echo "<br>Username = " . $_SESSION[

以下是3个php脚本: 设置会话的第一个文件:

<?php session_start(); // store session data
$_SESSION["username"] = "joshmathews" ;
$_SESSION["name"] = "josh" ; ?> 

第二个脚本,我首先输出代码,然后销毁会话,然后再次启动会话:

<?php session_start(); 
echo "<br>Username = " . $_SESSION["username"];
echo "<br> name= " . $_SESSION["name"] ;
echo "<br>" . session_id() ; 
//session_id(200) ; //
 session_destroy() ; 
echo "<br>Username = " . $_SESSION["username"]; 
echo "<br> name= " . $_SESSION["name"] ; 
echo "<br>" .session_id() ;

现在,在第二个脚本中,如果我包括更改会话id的行,我仍然可以在第三个代码中访问会话数组,但是如果我排除会话id的更改,那么我无法访问第三个代码中的会话数组。为什么?

session\u id()
需要在
session\u start()
之前调用,以便正确设置id

看。在参数
$id
下,它说明了这一点

如果指定了id,它将替换当前会话id。会话id()需要 在会话_start()之前为此目的调用

此外,在设置
$id
时,应将其作为字符串传递,以实现一致性:

session_id('200');

因为当你调用
session\u id(200)
时,它正在将当前会话更改为另一个会话,而你正在销毁一个新创建的会话

请在此阅读更多:

如果指定了id,它将替换当前会话id。为此,需要在会话启动()之前调用会话id()


我不认为在第二个块中销毁会话后可以使用会话变量。只有在会话销毁()之后写入会话启动(),我才能使用这些变量。你知道为什么吗???问题还不清楚,你是否尝试过使用
session\u regenate\u id()
而不是销毁和重新创建会话?session\u destroy与session\u unset类似,但区别在于它也会临时销毁会话。如果之后会有一个脚本请求,该脚本具有行session_start,那么最终结果将类似,如果不是session_destroy,我将使用session_unset不,我的意思是您正在为不同的session id销毁并重新创建session,为什么不使用
session_regenerate_id()
?好的,我明白你的意思。但是我有一个问题,如果我正在销毁新的会话,它不应该只删除数据并保留会话的id吗。因为当我没有更改会话id时,它破坏了会话的数据,但是会话id被保存了。
session_id('200');