2010-05-24 23 views
5

Có thể tắt xử lý phiên trong Joomla 1.5 cho khách không?Tắt phiên người dùng cho khách

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' 

Trả lời

4

tôi có lẽ phát hiện ra câu trả lời:

Bạn có thể thêm đối số thứ hai vào dòng trong /index.php

/** 
* CREATE THE APPLICATION 
* 
* NOTE : 
*/ 
$mainframe =& JFactory::getApplication('site'); 

thay đổi dòng này là;

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

Thao tác này sẽ đóng phiên làm việc chỉ trong giao diện người dùng và bạn có thể đặt trình xử lý phiên thành cơ chế bộ nhớ cache như APC, Memcache.I thích APC.

-1

Joomla theo mặc định theo dõi dữ liệu phiên trong bảng jos_session, như tôi thấy bạn đã tìm ra. Tuy nhiên, bạn có thể dễ dàng vô hiệu hóa điều này bằng cách vào bảng quản trị của bạn - Cấu hình toàn cầu - Hệ thống - Cài đặt phiên và thay đổi trình xử lý phiên từ "cơ sở dữ liệu" thành "Không".

+0

Ngay cả khi tôi đặt trình xử lý phiên thành "Không" từ chương trình phụ trợ, Joomla vẫn chạy các truy vấn bên dưới, các truy vấn này có thể được nhìn thấy từ gỡ lỗi. # DELETE TỪ jos_session Ở ĐÂU (thời gian < '1274767797') # SELECT * TỪ jos_session ĐÂU session_id = '48f542307364b096e85db0b8453bff54' # CẬP NHẬT 'jos_session' SET' time' = '1274768697' , 'userid' = '0',' usertype' = '', 'tên người dùng' = '',' gid' = '0', 'khách' = '1',' client_id' = '0' WHERE session_id = '48f542307364b096e85db0b8453bff54' – WebolizeR

3

Tôi đã gặp sự cố tương tự này và muốn vô hiệu hóa phiên khách trong lối vào nhưng vẫn giữ lại các phiên trong chương trình phụ trợ. Cũng như tôi phát hiện ra rằng google và bots khác thực hiện rất nhiều yêu cầu trang và sau đó tạo phiên và bảng phiên của chúng tôi là gettin quá lớn.

Solution (Không phải là tốt đẹp, nhưng công trình)

tôi đã thay thế chức năng chèn (thư viện/joomla/Cơ sở dữ liệu/bảng/session.php)

với

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; 
} 
} 
Các vấn đề liên quan