2010-05-24 19 views
5

Misafirlerin Joomla 1.5'deki oturum açmasını devre dışı bırakmak mümkün mü?Konuk için kullanıcı oturumunu devre dışı bırakma

Sitesi ağır yük altında önbellek sistemi olarak APC ya da memcache'den kullanacak, bu yüzden benim için önemlidir: Ön sonunda kullanıcı sistemini kullanmayan

, ben aşağıda gibi sorguları çalıştırmak için gerekli değil farz.

DELETE FROM jos_session WHERE (time < '1274709357') 

SELECT * FROM jos_session WHERE session_id = '70c247cde8dcc4dad1ce111991772475' 

UPDATE `jos_session` SET `time`='1274710257',`userid`='0',`usertype`='',`username`='',`gid`='0',`guest`='1',`client_id`='0',`data`='__default|a:8:{s:15:\"session.counter\";i:5;s:19:\"session.timer.start\";i:1274709740;s:18:\"session.timer.last\";i:1274709749;s:17:\"session.timer.now\";i:1274709754;s:22:\"session.client.browser\";s:88:\"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\";s:8:\"registry\";O:9:\"JRegistry\":3:{s:17:\"_defaultNameSpace\";s:7:\"session\";s:9:\"_registry\";a:1:{s:7:\"session\";a:1:{s:4:\"data\";O:8:\"stdClass\":0:{}}}s:7:\"_errors\";a:0:{}}s:4:\"user\";O:5:\"JUser\":19:{s:2:\"id\";i:0;s:4:\"name\";N;s:8:\"username\";N;s:5:\"email\";N;s:8:\"password\";N;s:14:\"password_clear\";s:0:\"\";s:8:\"usertype\";N;s:5:\"block\";N;s:9:\"sendEmail\";i:0;s:3:\"gid\";i:0;s:12:\"registerDate\";N;s:13:\"lastvisitDate\";N;s:10:\"activation\";N;s:6:\"params\";N;s:3:\"aid\";i:0;s:5:\"guest\";i:1;s:7:\"_params\";O:10:\"JParameter\":7:{s:4:\"_raw\";s:0:\"\";s:4:\"_xml\";N;s:9:\"_elements\";a:0:{}s:12:\"_elementPath\";a:1:{i:0;s:74:\"C:\\xampp\\htdocs\\sites\\iv.mynet.com\\libraries\\joomla\\html\\parameter\\element\";}s:17:\"_defaultNameSpace\";s:8:\"_default\";s:9:\"_registry\";a:1:{s:8:\"_default\";a:1:{s:4:\"data\";O:8:\"stdClass\":0:{}}}s:7:\"_errors\";a:0:{}}s:9:\"_errorMsg\";N;s:7:\"_errors\";a:0:{}}s:13:\"session.token\";s:32:\"a2b19c7baf223ad5fd2d5503e18ed323\";}' 

    WHERE session_id='70c247cde8dcc4dad1ce111991772475' 

cevap

4

ile Yanıt:

/index.php

01'deki satır için ikinci bir bağımsız değişken ekleyebilirsiniz.

bu satırı aşağıdaki gibi değiştirin;

$mainframe =& JFactory::getApplication('site',array('session'=>false)); 

Bu

sadece önyüzdeki taşıma oturumu kapanacak ve ayrıca APC gibi bir önbellek mekanizmasına oturum yönetimini ayarlayabilirsiniz, Memcache.I APC tercih ederim.

-1

Joomla, varsayılan olarak, oturum verilerinizi jos_session tablosunda izlediğini gördüğünüz şekilde izler. Ancak, bunu yönetici panelinize - Genel Yapılandırma - Sistem - Oturum Ayarları bölümüne gidip oturum işleyicisini "veritabanı" dan "Hiçbiri" olarak değiştirerek kolayca devre dışı bırakabilirsiniz.

+0

Oturum işleyicisini arka uçtan "Yok" olarak ayarlasa bile, Joomla yine de sorguları aşağıda çalıştırırsa, bu sorgular hata ayıklamadan görülebilir. # WHERE jos_session DAN SİL (zaman < '1274767797') # SEC * session_id = '48f542307364b096e85db0b8453bff54' # UPDATE ' SET' Zamanı '= '1274768697' jos_session' jos_session DAN , "userid" = "0", "usertype" = "", "username" = "", "gid" = "0", "guest" = "1", "client_id" = "0" WHERE session_id = '48f542307364b096e85db0b8453bff54' – WebolizeR

3

Aynı sorunu yaşadım ve ön oturumdaki oturumları devre dışı bırakmak istedim, ancak oturumları arka planda saklamak istedim. Ayrıca, google ve diğer botların çok sayıda sayfa isteği oluşturduğunu ve ardından oturum oluşturduğunu ve oturum tablomuzun çok büyük olduğunu öğrendim.

Çözüm (yani hoş değil, ama işleri)

yerime başkasının

fonksiyon ekleme (kütüphaneler/joomla/veritabanı/tablo/session.php)

muhtemelen öğrendim

function insert($sessionId, $clientId) { 

$url = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 

$this->session_id = $sessionId; 

$this->client_id = $clientId; 

$this->time = time(); 

if ($this->guest!=1 || stristr($url,'/administrator')) 
     $ret = $this->_db->insertObject($this->_tbl, $this, 'session_id'); 

if(!$ret && $this->guest!=1) { 
     $this->setError(strtolower(get_class($this))."::". JText::_('store failed') ."<br />" . $this->_db->stderr()); 
     return false; 
} 
else { 
     return true; 
} 
} 
İlgili konular