我在使用 Joomla 时遇到会话/cookie 问题!版本:Joomla!1.5.9 生产/稳定 [Vatani] 2009 年 1 月 9 日 23:00 GMT。
我正在尝试将数据保存到会话中并在下一页上访问它,我尝试过:
1) 使用 joomlas 会话 ($session->set('var', 'data')) - 这是我的首选方法
2) 使用普通的 PHP 会话 ($_SESSION['Var'] = 'data') - 这工作正常,直到我初始化 joomla 大型机
3) 使用 PHP Cookies (setcookie('var', 'data', time()+3600,'/');) - 这在我初始化 joomla 之前仍然有效。
这是我尝试使用的代码:
第 1 页:
define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' ));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$session = JFactory::getSession();
$thedata = array();
$i = 0;
if($resultscount > 0) // $resultscount = mysql_num_rows($sql) == 1097 in my script
{
while($row = mysql_fetch_assoc($result))
$thedata[$i]['id'] = $row['user_id'];
...LOTS more additions to $thedata, 1000+ rows containing 28 variables each.
$i++;
}
$session->set('thedata',$thedata);
第2页:
define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' ));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$session = JFactory::getSession();
print_r($session->get('thedata'));
会话始终为空。我注意到如果会话只包含少量数据(1 或 2 行)它可以工作,但是当我尝试将大量结果保存到会话中时它会中断并且下一页上的会话是空的。
cookie 也会发生同样的情况,结果很少 = 工作正常,结果很多 = cookie 为空。
我究竟做错了什么?