it-swarm-tr.com

Bir modül içinden joomla oturumunu alma

Ajax kullanarak harici dosyadan bir oturum değişkeni ayarlıyorum:

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');
}

Bu yüzden benim oturum var harici dosyadan ayarlıyorum, şimdi var sorun alıyorum, bir yardımcı dosyadan bu oturum değerini almanız gerektiğini söylüyor:

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;
}

EĞER a = b iyi çalışıyor sorun harici dosyadan ayarladığım oturumda değerleri almaktır ...

Nasıl bu değeri almak için herhangi bir fikir? .. belki yanlış ayarlıyorum, oturumu ayarlayan dosya kök dosyada ... domain.com/sess.php ama yardımcı dosya bileşenleri/com_carreton/helper /file.php

Herhangi bir fikir?

Teşekkür ederim.

3
Tanker

Yanlış oturumu kullanıyorsunuz. $mainframe->initialize İçin sınıf zincirindeki mantığı takip ederseniz, joomla sürümünüze bağlı olarak https://github.com/joomla/joomla gibi bir satır bulacaksınız. -cms/damla/evreleme/libraries/joomla/uygulama/web.php # L1062

$session = JSession::getInstance($handler, $options);

Bu oturum oluşturma çağrısı, seçenekler etiketinde oturum için kullanılan çerezin adını tanımlayan değişkenleri içerir.

Başlatmadan önce JFactory::getSession() çağırarak, büyük olasılıkla farklı bir çerez adı veya kimlik numarası olan bir oturum oluşturdunuz. Bunun yerine kullanın

$mainframe = JFactory::getApplication('site');
$mainframe->initialise();
$session    = $mainframe->getSession();
3
garyamort

Bunu dene!

$session   =& JFactory::getSession();

$mainframe = JFactory::getApplication('site');
0
Doungdara

Hata ayıklamayı genel yapılandırmanızdaki sistem sekmesinden açarsanız, ekranın altındaki hata ayıklama panellerinde oturumda neler olduğunu görebilirsiniz.

Harici bir dosya kullanmaktan kaçının, neden ajax çağrısı yapmak için bir denetleyicide bir işlev kullanmıyorsunuz?

0
patterncatcher