2012-06-27 63 views
1

我想訪問我在另一個php文件中聲明的會話變量。從另一個php文件訪問SESSION變量

我該怎麼做?

這是我做的。

test.php的

$_SESSION['SESS_VERSION'] = $member['Version']; 
session_write_close(); 
header('location: '.$_SESSION['SESS_VERSION']); 

此會話變量是工作,我正確地重定向到另一個頁面。

在該網頁上,例如:

test2.php 

我從JavaScript調用PHP腳本返回我JSON格式化數據。

我試圖在test3.php腳本做的是從test.php

這裏訪問會話變量的代碼:

<?php 
header("Content-type: application/json; charset=UTF-8"); 

echo '{ "results" : [ '; 

$result = dbMySql::Exec("SELECT 
    m.data1 
    v.data2, 
    k.data3 
FROM {$_SESSION['SESS_MAIN_BASE']} m, {$_SESSION['SESS_SECOND_BASE']} v, {$_SESSION['SESS_THIRD_BASE']} k"); 
$result_array = array(); 
?> 

爲什麼我不能訪問任何會話變量對這個PHP頁面?也許我的語法不正確。但這是我得到的錯誤:

Warning: Cannot modify header information - headers already sent 

當然錯誤,變量是空的。

+0

不能同時回顯和標題。 –

+1

[閱讀該死的手冊](http://php.net/manual/en/function.session-start.php)甚至[搜索StackOverflow](http://stackoverflow.com/questions/9942907/php-sessions不正確的工作) – PenguinCoder

回答

4

你需要

在session_start()

在每個PHP腳本的頂部,否則會話變量是整個PHP文件毫無意義。

而且你正在因爲你有

這裏不能更改頭錯誤的代碼:

頭之前被髮送給瀏覽器,任何內容之前,將所有頭功能

據我所知,
+1

很確定代碼塊中的*'這是代碼'*,只是不正確的SO格式,而不是實際的文件內容。 – PenguinCoder

+0

的確,在這種情況下,他可能在php標籤之前有空格,只有這樣他纔會得到該代碼的標題錯誤。但是如果他在使用$ _SESSION之前不知道使用session_start,你永遠不會知道哈哈 –