2012-01-19 4 views
3

私はJoomlaフレームワークを含めると、Joomlaのセッションは、私が別のスクリプトで使用しているセッションを上書きしているようです。 Joomlaの最初のセッションから情報を取得するにはどうすればよいですか?Joomlaのセッションで上書きされることなく、(外部PHPスクリプトから)セッションデータを取得するには?

DETAILS

私はJoomlaの外部のPHPスクリプトでセッションを開始しました。ファイルは、私は、それは2つのファイル、getsessdata.phpが含まmain.phpと呼ばれるPHPスクリプトを持っており、

main.php

<?php 
    include("getsessdata.php"); 
    include("getjoomla.php"); 
?> 
をgetjoomla.php file1.php

<?php 
    session_start(); 
    $qid[0]=1; 
    $qid[0]=2; 
    $qid[0]=3; 
    $_SESSION['qid']=$qid; 
?> 

されていることを

getjoomla.phpが含まれていない場合、main.phpからセッションデータを取得できます。

var_dump($ _ SESSION); getjoomla.phpが含まれている場合、qidのセッションデータが存在しないことを示します。

getsessdata.php

<?php 
    session_start(); 
    $qid=$_SESSION['qid']; 
?> 

getjoomla.php

<?php 
    define('_JEXEC', 1); 
    define('JPATH_BASE', dirname(__FILE__)); 
    define('DS', DIRECTORY_SEPARATOR); 
    require_once (JPATH_BASE .DS.'includes'.DS.'defines.php'); 
    require_once (JPATH_BASE .DS.'includes'.DS.'framework.php'); 
    require_once (JPATH_BASE.DS.'libraries'.DS.'joomla'.DS.'environment'.DS.'request.php'); 

    $mainframe =& JFactory::getApplication('site'); 
    $mainframe->initialise(); 
?> 

質問:私はfile1.phpからセッション情報にアクセスし、まだgetjoomlaからのデータにアクセスするにはどうすればよい

。 PHP?なぜ私は最初のセッションから情報を失うのですか?

これが役立つかどうかわかりませんが、一度main.phpのfile1からセッションデータを取得すると、そのセッションは不要になります。

答えて

1

$ mainframeを使用すると、私はJoomla!を推測しています! 1.5.x.

構築時にJFactory :: getApplication( 'site')を呼び出すと、session_start()を使用して新しいセッションが作成され、以前のセッションが吹き飛ばされます。

は、具体的にJSESSIONが呼び出されたときには、これを回避するには、*この試みることができる

function _start() 
{ 
    // start session if not startet 
    if($this->_state == 'restart') { 
     session_id($this->_createId()); 
    } 

    session_cache_limiter('none'); 
    session_start(); 

    // Send modified header for IE 6.0 Security Policy 
    header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"'); 

    return true; 
} 

_Start呼び出す__constructです:

  1. は$ _SESSION

    に名前空間にデータを置きます
  2. 'site'値の後にオプション配列を渡します。あなたのセッション名前空間。

- >

$options['name'] = 'qidSpace'; 

$mainframe =& JFactory::getApplication('site', $options); 

HTH。

*私は100%メカニックスではありませんが、それは近いはずです。

+0

困ったことに、Joomla 1.7!私は$ mainframeが廃止されたことを知らなかった。正しい方向に私を指してくれてありがとう:) – TryHarder

+0

これは廃止されたコードを置き換えるだろうと思いますか? $ app =&JFactory :: getApplication( 'site'); $ app-> initialise(); – TryHarder

+0

今はリファレンスポイントの近くにはありませんが、それは正しいようです。 – Craig

0

最後に、私は情報を格納するためにJoomlaセッションを使用しました。

//Store values in Joomla Session 
$session = JFactory::getSession(); 
$session->set('variable', $variable); 


//Get values from Joomla session later 
$variable = $session->get('variable'); 
0

矛盾を避けるために、メインフレーム部分が必要ない場合はスキップすることもできます。例えば

<?php 
    define('_JEXEC', 1); 
    define('JPATH_BASE', 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(); 

jimport('joomla.user.helper'); 
JUserHelper::verifyPassword($pass1,$pass2); 
?> 

それはそれを把握するために私にいくつかの時間がかかったし、それが動作!

関連する問題