PHP会话范围
我有一个PHP会话范围,php,session,Php,Session,我有一个index.php,one.php文件 在one.php中,我启动了会话并设置了会话变量: session_start(); if(isset($_GET['user'])){ $_SESSION['user'] = $_GET['user']; } function getUsername(){ return $_SESSION['user']; } 在调用函数getUsername() 我没有在index.php中启动会话 include_once('one.
index.php
,one.php
文件
在one.php中,我启动了会话并设置了会话变量:
session_start();
if(isset($_GET['user'])){
$_SESSION['user'] = $_GET['user'];
}
function getUsername(){
return $_SESSION['user'];
}
在调用函数getUsername()
我没有在index.php中启动会话
include_once('one.php');
echo getUsername();
但是我没有在index.php
中获得会话。为什么?我将变量传递为
index.php?user=newuser .
不可能在没有启动会话的情况下在所有页面中获取会话。如果我设置一次,是否有可能从任何地方获取全局变量?$\u SESSION
是全局的。但是,只有在调用了session\u start
之后,它才会被初始化。session\u start()必须在启动第一个PHP文件后立即添加
- 确保在index.php的第一行添加
session\u start
之前没有任何空格/字符。而且没有必要添加one.php,因为会话是全局的。您可以在one中访问变量。php否不启动会话就不可能在所有页面中获取会话。因此,基本上,您需要遵循以下两种方式之一:-
- 在非常新的页面中,在页面的最开始处,使用以下代码行启动会话,不使用任何空格字符:-
对于每个会话,顶部的启动()是必不可少的
session_start()
试一试
print_r($_SESSION)
您可以调试所有会话值。打开错误报告和显示。把它放在index.php的最顶端,在打开之后,你的代码没有任何bug。它是完美的。我想您的问题在于会话_start()。正如Phil所说,在任何输出之前,调用session_start()的最短时间是one.php。一个单独的空间也可以使它不工作。。如果我在index.php中添加session start,如果我在one.php中设置session,而不在one.php中添加session start。。它会工作吗?因为我只是在index.php中包含一个.php,会话已经开始了。。
session_start()
print_r($_SESSION)