Вернуться   Форум SAPE.RU > Общие вопросы > Разработка и сопровождение сайтов

-->
Ответ
 
Опции темы
Старый 28.06.2008, 19:20   #1
Новичок
 
Регистрация: 26.06.2008
Сообщений: 13
Вес репутации: 0
GuRuEdwarD на пути к лучшему
По умолчанию 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
GuRuEdwarD вне форума   Ответить с цитированием
Старый 28.06.2008, 19:30   #2
Специалист
 
Регистрация: 25.12.2007
Сообщений: 117
Вес репутации: 0
darksquall нам пока неизвестен
По умолчанию

а чем это не устраивает?

// 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
darksquall вне форума   Ответить с цитированием
Старый 28.06.2008, 20:47   #3
Новичок
 
Регистрация: 26.06.2008
Сообщений: 13
Вес репутации: 0
GuRuEdwarD на пути к лучшему
По умолчанию

Подходит, разобрался, большое спасибо!

Как начинающему интересно, а кто добавляет sid и зачем они нужны на форуме?
GuRuEdwarD вне форума   Ответить с цитированием
Старый 03.07.2009, 14:52   #4
Специалист
 
Регистрация: 25.06.2009
Адрес: Красноярск
Сообщений: 443
Вес репутации: 201
BIOHAZARD - за этого человека можно гордитсяBIOHAZARD - за этого человека можно гордитсяBIOHAZARD - за этого человека можно гордитсяBIOHAZARD - за этого человека можно гордитсяBIOHAZARD - за этого человека можно гордитсяBIOHAZARD - за этого человека можно гордитсяBIOHAZARD - за этого человека можно гордитсяBIOHAZARD - за этого человека можно гордитсяBIOHAZARD - за этого человека можно гордится
Отправить сообщение для BIOHAZARD с помощью ICQ
По умолчанию

не устраивает тем, что капча на регистрацию нового пользователя не работает
BIOHAZARD вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка кода на 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:15.