2013-04-15 40 views
2

我有会话/饼干的问题,同时使用Joomla!版本:Joomla! 1.5.9生产/稳定[Vatani] 9-January-2009 23:00 GMT。的Joomla空会话和Cookies

我试图将数据保存到会话中,访问它的下一个页面上,我曾尝试:

1)使用joomlas会议($会话级>设置(“var”或“数据”)) - 这是我的优选的方法

2)使用正常PHP会话($ _SESSION [ '无功'] = '数据') - ,直到我初始化的Joomla大型机

3)利用PHP曲奇(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行)它的工作原理,但是当我尝试到大量结果保存到它打破了会话,会话是下一个网页上的空白。

同样的事情与饼干,结果很少发生=正常工作,很多结果=饼干空。

我在做什么错了?

+1

之前我咆哮,请升级到Joomla 1.5.26,这是1.5系列的最新版本 – Lodder

+0

感谢您的迅速答复,但我不能升级,因为我正在为某人的系统写一个螺栓,并没有他们的许可升级他们现有的joomla平台。 –

+0

你在configuration.php中有一个有效的会话处理程序吗? –

回答

0

最有可能的,存储在会话中的二维数组大于30000名的变量,你会得到破坏你的数据溢出,所以他们迷路。通过复制会话存储中的数据库(空间有限),您无所获利。

这是比较合适的,重新查询数据。另外,使用Joomla! API而不是直接使用mysql函数。

$db = JFactory::getDBO(); 
$db->setQuery("SELECT ..."); 
$thedata = $db->loadObjectList('id'); 

是你所需要的(双索引$i不起任何作用)。