Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/12/2004, 20:54
Avatar de yoseman
yoseman
 
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 21 años, 1 mes
Puntos: 5
Luego tenemos además el campo session_page , que por sí te interesa, phpBB utiliza para determinar en qué página concreta del foro el usuario está navegando. En el archivo includes/constants.php están definidas una serie de constantes que asignan un identificador a cada página:
Código:
// Page numbers for session handling
define('PAGE_INDEX', 0);
define('PAGE_LOGIN', -1);
define('PAGE_SEARCH', -2);

define('PAGE_REGISTER', -3);
define('PAGE_PROFILE', -4);
define('PAGE_VIEWONLINE', -6);
define('PAGE_VIEWMEMBERS', -7);
define('PAGE_FAQ', -8);
define('PAGE_POSTING', -9);
define('PAGE_PRIVMSGS', -10);
define('PAGE_GROUPCP', -11);
define('PAGE_TOPIC_OFFSET', 5000);
Podrías crearte una constante más en ése archivo para poder indicar determinar en el 'foro' que el usuario esta navegando en la web desde el viewonline.php y desde el mismo ACP, pero ello requería algunos cambios en unos cuantos archivos: Te pongo un archivo que te indica dichos cambios, pero cómo algo secundario, si quieres te puedes meter a ello cuando consigues lo básico:
Código:
# 
#-----[ OPEN ]------------------------------------------ 
# 
viewonline.php

# 
#-----[ FIND ]------------------------------------------ 
# 
				case PAGE_FAQ:
					$location = $lang['Viewing_FAQ'];
					$location_url = "faq.$phpEx";
					break;

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
				case PAGE_TEMPLATE:
					$location = $lang['Template'];
					$location_url = "template.$phpEx";
					break;.

# 
#-----[ OPEN ]------------------------------------------ 
# 
admin/index.php

# 
#-----[ FIND ]------------------------------------------ 
# 
						case PAGE_FAQ:
							$location = $lang['Viewing_FAQ'];
							$location_url = "index.$phpEx?pane=right";
							break;

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
						case PAGE_TEMPLATE:
							$location = $lang['Template'];
							$location_url = "template.$phpEx?pane=right";
							break;

# 
#-----[ FIND ]------------------------------------------ 
# 
					case PAGE_FAQ:
						$location = $lang['Viewing_FAQ'];
						$location_url = "index.$phpEx?pane=right";
						break;

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
					case PAGE_TEMPLATE:
						$location = $lang['Template'];
						$location_url = "template.$phpEx?pane=right";
						break;

# 
#-----[ OPEN ]------------------------------------------ 
# 
language/lang_english/lang_main.php

# 
#-----[ FIND ]------------------------------------------ 
# 
?>

# 
#-----[ BEFORE, ADD ]------------------------------------------ 
# 
$lang['Template'] = 'Template';

# 
#-----[ OPEN ]------------------------------------------ 
# 
includes/constants.php

# 
#-----[ FIND ]------------------------------------------ 
# 
define('PAGE_GROUPCP', -11);

# 
#-----[ AFTER,  ADD ]------------------------------------------ 
# 
define('PAGE_TEMPLATE', -1045);


# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 
# EoM
En la línea que te dice de añadir la variable $lang['Template'] = 'Template'; tu simplemente pones $lang['Template'] = 'WEB'; o $lang['Template'] = 'página principal'; o lo que se te ocurra. Aunque si haces eso, entonces tienes que actualizar el campo session_page con el identificador, que en éste caso, para la página que hemos definido es -1045 en tu script que continua y gestiona la sesión phpBB. De esta forma, podrías saber desde el Administration Control Panel si el usuario está en la web o en el foro, y tambien en el viewonline.php
Pero bueno eso ya sería rizar el rizo.

Comprendo que la cosa no es del todo sencilla, pero yo diría que con esto debería de funcionar, otra cosa es que se pueda implementar fácilmente con ASP, pero bueno todo es ponerse :)

Respecto de las sesiones, creo que estaría bien, para el caso de que el usuario no acepte ni siquiera las cookies de sesión, propagar la variable sid por query string en caso de que el usuario esté logueado(al menos) al acceder de nuevo al foro, porque sino phpBB, en el caso de que no exista cookie de sesión, no podrá buscar identificador de usuario para esa sesión y está se perdería.
Eso es lo que deduzco de ésta parte de código:
Código PHP:
function session_pagestart($user_ip$thispage_id)
{
    global 
$db$lang$board_config;
    global 
$HTTP_COOKIE_VARS$HTTP_GET_VARS$SID;

    
$cookiename $board_config['cookie_name'];
    
$cookiepath $board_config['cookie_path'];
    
$cookiedomain $board_config['cookie_domain'];
    
$cookiesecure $board_config['cookie_secure'];

    
$current_time time();
    unset(
$userdata);

    if ( isset(
$HTTP_COOKIE_VARS[$cookiename '_sid']) || isset($HTTP_COOKIE_VARS[$cookiename '_data']) )
    {
        
$sessiondata = isset( $HTTP_COOKIE_VARS[$cookiename '_data'] ) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$cookiename '_data'])) : array();
        
$session_id = isset( $HTTP_COOKIE_VARS[$cookiename '_sid'] ) ? $HTTP_COOKIE_VARS[$cookiename '_sid'] : '';
        
$sessionmethod SESSION_METHOD_COOKIE;
    }
    else
    {
        
$sessiondata = array();
        
$session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : '';
        
$sessionmethod SESSION_METHOD_GET;
    }

    
// 
    
if (!preg_match('/^[A-Za-z0-9]*$/'$session_id))
    {
        
$session_id '';
    }

    
//
    // Does a session exist?
    //
    
if ( !empty($session_id) )
    {
        
//
        // session_id exists so go ahead and attempt to grab all
        // data in preparation
        //
        
$sql "SELECT u.*, s.*
            FROM " 
SESSIONS_TABLE " s, " USERS_TABLE " u
            WHERE s.session_id = '$session_id'
                AND u.user_id = s.session_user_id"

Salu2 (espero haberte ayudado con todo este rollo, yo no he probado, pero para mí que lo básico debería de funcionar)
__________________
[+]
[+]

Última edición por yoseman; 21/12/2004 a las 03:07