PHP会话范围

时间:2011-07-01 06:31:17

标签: php session

我有一个index.phpone.php文件。

在one.php中我启动会话并设置会话var:

session_start(); 
if(isset($_GET['user'])){
    $_SESSION['user'] = $_GET['user'];
    }
function getUsername(){
  return $_SESSION['user'];
}

我在调用函数getUsername()后在index.php中包含one.php 我没有在index.php

中开始会话
include_once('one.php');
echo getUsername();

但是我没有在index.php中获得会话。为什么?我把变量传递给

index.php?user=newuser .

是否无法在没有启动会话的所有页面中获取会话。是否有任何可能的方法从任何地方获取全局变量,如果我设置一次..?

5 个答案:

答案 0 :(得分:1)

如果没有启动会话,则无法在所有页面中获取会话。所以基本上,你需要遵循以下两种方式之一: -

  • 使用以下代码行在页面的最开始的新页面中启动会话,没有任何空白字符: -

<?php

session_start();

// Other Lines of Code

  • 在每个新页面的开头包含另一个公共页面(common.php),该页面在该公共页面的最开头有一行(session_start();)。

基本上,这个特定的陈述(session_start();)是使用会话的核心。

现在根据您的问题,页面&#34; one.php&#34;必须在一开始就包括在内。所以应该有效。

希望它有所帮助。

答案 1 :(得分:0)

$_SESSION是全球性的。但只有在调用session_start后才会初始化。

答案 2 :(得分:0)

必须在启动第一个PHP文件后立即添加

session_start()。

  • 确保<?php
  • 之前没有任何空格/字符
  • 启用错误报告(1)
  • 尝试var_dump($ _ SESSION)(2)

(1):

<?php
error_reporting(E_ALL);

(2):

var_dump($_SESSION);

答案 3 :(得分:0)

session_start添加为index.php中的第一行。并且没有必要添加one.php,因为$_SESSION是全局的,您可以访问one.php中的变量

答案 4 :(得分:0)

对于每个会话,顶部的session_start()必不可少

session_start()

尝试

print_r($_SESSION)

您可以调试所有SESSION值。