Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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会话范围_Php_Session - Fatal编程技术网

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)