私はajaxを使用して外部ファイルからセッション変数を設定しています:
define( '_JEXEC', 1);
define( 'DS', DIRECTORY_SEPARATOR );
define( 'JPATH_BASE', realpath(dirname(__FILE__) .'/' ) );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$session = JFactory::getSession();
$mainframe = JFactory::getApplication('site');
$mainframe->initialise();
// $session->clear( 'ss');
if (isset($_POST['v'])) {
$value = filter_input(INPUT_POST, 'v', FILTER_SANITIZE_NUMBER_INT);
$session->set('ss', $value);
$response = $session->get('ss');
// echo $response;
} else {
echo $session->get('ss');
}
それで、外部ファイルからセッション変数を設定しているので、今私が抱えている問題はそれを取得することです。ヘルパーファイルからそのセッション値を取得する必要があるとしましょう。
public function calculation($carreton) {
// lots of line to make some calculations
$session =& JFactory::getSession();
if ($session->get('ss') == 1) {
$seg = 1000;
$subtotal_e = $subtotal + $seg;
} else {
$subtotal_e = 0;
}
// Final results
return $someArrs;
}
IF a = bが正常に機能している場合、問題は外部ファイルから設定したセッションから値を取得することです...
その値を取得する方法はありますか?..多分私はそれを間違って設定しています、セッションを設定するファイルはルートファイルにあります... domain.com/sess.phpしかしヘルパーファイルはcomponents/com_carreton/helperにあります/file.php
何か案は?
ありがとうございました。
間違ったセッションを使用しています。 _$mainframe->initialize
_のクラスチェーンのロジックをたどると、joomlaのバージョンに応じて、 https://github.com/joomla/joomla-cms/blob/stagingのような行が見つかります。 /libraries/joomla/application/web.php#L1062
_$session = JSession::getInstance($handler, $options);
_
そのセッション作成呼び出しには、セッションに使用されるCookieの名前を定義する変数がオプションタグに含まれています。
初期化の前にJFactory::getSession()
を呼び出すことにより、異なるcookie名またはID番号を持つ可能性が高いセッションを作成しました。代わりに
_$mainframe = JFactory::getApplication('site');
$mainframe->initialise();
$session = $mainframe->getSession();
_
これを試して!
$session =& JFactory::getSession();
$mainframe = JFactory::getApplication('site');
グローバル構成のシステムタブからデバッグをオンにすると、画面下部のデバッグパネルでセッションの内容を確認できます。
外部ファイルの使用は避けますが、代わりにコントローラーの関数を使用してajax呼び出しを実行しないのはなぜですか?