将$ _SESSION变量传递给包含的文件

时间:2012-10-21 20:53:40

标签: php file session include

我有第一个PHP文件: /home/www/subdomain1.domain.tld/file.php

<?php
    session_start();
    $_SESSION['foo']='bar';   
    include "/home/www/subdomain2.domain.tld/foo2.php";
 ?>

和/home/www/subdomain2.domain.tld/foo2.php:

<?php 
    session_start();
    echo $_SESSION['foo'];
?>

第一个文件中的“include”会生成“500 Internal Server Error”,我认为这是因为会话变量没有传递给包含的文件,我该如何解决?

谢谢 亚历

编辑: 我必须使用会话变量才能在subdomain2上的每个php文件中使用这些变量。

2 个答案:

答案 0 :(得分:0)

包含文件时不需要使用会话。具有相同名称空间的所有请求都是相同的。

file.php:

$foo = 'bar';

include 'foo2.php';

foo2.php

echo $foo; // returns 'bar'

答案 1 :(得分:0)

您不应该在第二个文件中启动会话。由于会话是在file.php中启动的,因此它已经可用于foo2.php。

错误可能是因为PHP输出会话已经启动的警告。

要进行调试,请将error_reporting(E_ALL); ini_set('display_errors', 1);添加到第一个PHP脚本的开头。

你应该能够做到:

<强> file.php

<?php
    session_start();
    $_SESSION['foo']='bar';   
    include "/home/www/subdomain2.domain.tld/foo2.php";

<强> foo2.php

我有第一个PHP文件:/home/www/subdomain1.domain.tld/file.php

和/home/www/subdomain2.domain.tld/foo2.php:

<?php 
// session_start();  // remove, do not need this here
echo $_SESSION['foo'];