28.06.2008, 19:20 | #1 |
Новичок
Регистрация: 26.06.2008
Сообщений: 13
Вес репутации: 0
|
Sessions MOD к PHPBB3
Для корректной работы SAPE на phpBB обязательно должен быть убран идентификатор сессии!!!
Делается это при помощи простого мода, который прописывается в файл session.php Вот пример мода, какой я нашёл на форуме, по моему он подходит к phpbb2, а не подскажите ли, какой мод к phpbb3. Код:
################################################################# ## MOD Title: Guest Sessions MOD ## MOD Version: 0.04 ## MOD Author: CyberAlien <no@public_email> (Vjacheslav Trushkin) http://www.phpbbstyles.com ## MOD Description: ## This mod removes session id for guests from url and this way ## guests who don't have cookies like different robots will use ## correct urls. It can be used to allow googlebot and other ## search engines to spider your forum correctly. ## ## Installation Level: Easy ## Installation Time: 1-2 Minutes ## Files To Edit (1): includes/sessions.php ############################################################## ## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the ## latest version of this MOD. Downloading this MOD from other sites could cause malicious code ## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered ## in our MOD-Database, located at: http://www.phpbb.com/mods/ ############################################################## ## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD ############################################################## # #-----[ OPEN ]--------------------------------------------- # includes/sessions.php # #-----[ FIND ]--------------------------------------------- # around line 157 $sql = "UPDATE " . SESSIONS_TABLE . " SET session_user_id = $user_id, session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login, session_admin = $admin WHERE session_id = '" . $session_id . "' AND session_ip = '$user_ip'"; # #-----[ REPLACE WITH ]--------------------------------------- # $sql_ip = $user_id == ANONYMOUS ? " AND session_ip = '$user_ip'" : ''; $sql = "UPDATE " . SESSIONS_TABLE . " SET session_ip = '$user_ip', session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login, session_admin = $admin WHERE session_id = '" . $session_id . "' $sql_ip AND session_user_id = '$user_id'"; # #-----[ FIND ]--------------------------------------------- # around line 210 $SID = 'sid=' . $session_id; # #-----[ REPLACE WITH ]--------------------------------------- # $SID = $user_id > 0 ? 'sid=' . $session_id : ''; # #-----[ FIND ]--------------------------------------------- # around line 288 $SID = ($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' . $session_id : ''; # #-----[ REPLACE WITH ]--------------------------------------- # $SID = $userdata['user_id'] > 0 ? (($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' . $session_id : '') : ''; # #-----[ FIND ]--------------------------------------------- # around line 340 // // If we reach here then no (valid) session exists. So we'll create a new one, # #-----[ BEFORE, ADD ]--------------------------------------- # elseif(empty($sessiondata)) { // try to login guest $sql = "SELECT u.*, s.* FROM " . SESSIONS_TABLE . " s, " . USERS_TABLE . " u WHERE s.session_ip = '$user_ip' AND s.session_user_id = " . ANONYMOUS . " AND u.user_id = s.session_user_id LIMIT 0, 1"; if ( !($result = $db->sql_query($sql)) ) { message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql); } $userdata = $db->sql_fetchrow($result); if ( isset($userdata['user_id']) ) { if ( $current_time - $userdata['session_time'] > 60 ) { $sql = "UPDATE " . SESSIONS_TABLE . " SET session_time = $current_time, session_start = $current_time, session_page = 0 WHERE session_id = '" . $userdata['session_id'] . "'"; if ( !$db->sql_query($sql) ) { message_die(CRITICAL_ERROR, 'Error updating sessions table', '', __LINE__, __FILE__, $sql); } } return $userdata; } } # #-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ # # EoM |
28.06.2008, 19:30 | #2 |
Специалист
Регистрация: 25.12.2007
Сообщений: 117
Вес репутации: 0
|
а чем это не устраивает?
// Assign sid if session id is not specified if ($session_id === false) { $session_id = $_SID; } // Begin SEO phpBB global $user; if ($user->data['user_id'] == ANONYMOUS OR $user->data['is_bot'] ) { $session_id = false; } // End SEO phpBB |
28.06.2008, 20:47 | #3 |
Новичок
Регистрация: 26.06.2008
Сообщений: 13
Вес репутации: 0
|
Подходит, разобрался, большое спасибо!
Как начинающему интересно, а кто добавляет sid и зачем они нужны на форуме? |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Установка кода на phpbb3 | NCom | Установка кода на различные движки | 179 | 29.07.2013 23:43 |
phpbb2 и phpbb3 | Oleg | Контекстные ссылки и все, что с ними связано | 3 | 02.07.2008 23:28 |
Написание модов под phpbb3 | NCom | Деловое сотрудничество | 0 | 26.04.2008 12:47 |
Кто понимает в phpbb3 (работа) | NCom | Деловое сотрудничество | 2 | 13.03.2008 22:11 |
Часовой пояс GMT +3, время: 05:31.