2013-07-15 48 views
0

您好我創建了兩個會話變量與存儲在一個逗號分隔的字符串查詢的ID列表以後,發生破碎到一個數組的目的頁面攜帶。當我使用apache在localhost上運行代碼時,代碼工作正常;但是,當我在實際服務器上上傳文件時,主頁面中聲明的$ _SESSION變量永遠不會轉移到第二位。我在case.php頁面上做了一個if語句來測試它,並且我也做了一個var_dump(),它們都顯示爲NULL。PHP會話變量不跨越

我想知道有什麼我需要與服務器進行配置?因爲它讀取PHP並且沒有任何錯誤地執行所有其他功能。感謝任何幫助或意見。

下面請看代碼:

主頁:patients.php

<?php 
// store session data 
session_start(); 
// store SQL line 

// store patient ID 
$_SESSION['pid']=''; 

// store case ID 
$_SESSION['cid']=''; 


... 
while ($record = mysql_fetch_row($result)) { 

    $patient = $record[0]; 
    $statusD = $record[1]; 
    $substatusD = $record[2]; 
    $caseCount = $record[3]; 
    $statusReason = $record[4]; 
    $dateReviewed = $record[5]; 
    $caseID = $record[6]; 
    $lastUser =$record[7]; 

    //statusFlagged($patient,$caseID,$dateReviewed);    
    $statusFlagged = $record[8]; 
    //StatusFlag should be working as of 5/30/2013. Please double check 

    // comma-delimited patient ID 
    $_SESSION['pid'].=$patient.','; 

    // comma-delimited case ID 
    $_SESSION['cid'].=$caseID.','; 

下一頁:case.php

<?php 
// start session data 
session_start(); 
if(isset($_SESSION['pid'])) { 
echo "Your session is running " . $_SESSION['pid'] . "and" . $_SESSION['cid']; 
} 
else { echo "Session not running";} 

$patientIDString = $_SESSION['pid']; 
$caseIDString = $_SESSION['cid']; 
$patientIDArray = explode(',', $patientIDString); 
$caseIDArray = explode(',', $caseIDString); 
+1

任何東西之前,嘗試一個簡單的測試:運行(在「實際的服務器」)一對夫婦簡單地寫和'$ _SESSION'閱讀的網頁。這是因爲我看到在設置會話值之前必須運行一些額外的東西(數據庫讀取);問題可能來自那些東西(所以會話值可能永遠不會被設置)。 – Racso

+0

@Racso好主意。我試着將初始'$ _SESSION('pid')'設置爲'test',並在while循環中註釋這些變量,但仍然是相同的結果。一旦我在另一個頁面上,會話似乎不會繼續。 – alchuang

+0

當你添加'error_reporting(E_ALL)'時,你是否收到錯誤? – Pieter

回答

0

感謝您的有益的建議。我通過確保存儲在session.save_path下的路徑php.ini可以訪問,找到了解決方案。特別是如果你正在使用Apache。需要確保該目錄的所有者與apache相同。

改變路徑和讀/寫訪問後,一切正常,因爲它應該。