2013-07-15 49 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相同。

改变路径和读/写访问后,一切正常,因为它应该。