Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

Login usando BD de Wordpress-MU

Estas en el tema de Login usando BD de Wordpress-MU en el foro de Sistemas de gestión de contenidos en Foros del Web. Buenas tardes, estoy creando un conector entre phpBb3 y Wordpress-MU. La cuestión es que, cuando un Usuario meta su Username y Password en phpBb, comprueba ...
  #1 (permalink)  
Antiguo 05/05/2009, 04:41
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Login usando BD de Wordpress-MU

Buenas tardes,

estoy creando un conector entre phpBb3 y Wordpress-MU. La cuestión es que, cuando un Usuario meta su Username y Password en phpBb, comprueba dichos datos en la BD de Wordpress-MU (tabla "wp_users").

Cuando se ha comprobado que el Usuario y Contraseña existen en la BD de Wordpress-MU, lo comprueba en la BD de phpBb (si la Password es distinta, la actualiza y pone la misma que en Wordpress-MU).

Una vez que está todo comprobado, se llama a la función "hacerLogin", a la cual se le manda "$row":

Código PHP:
mysql_select_db('db_phpbb'$conx);    // Selecciono la Base de datos
$sql 'SELECT * FROM phpbb_users WHERE username = "' mysql_real_escape_string($username$conx)
     . 
'" AND user_password = md5("' mysql_real_escape_string($password$conx) . '")';        // Monto la sentencia SQL
$result mysql_query($sql$conx);        // La ejecuto
$row mysql_fetch_row($result);    // Extrae una fila del resultado 
Código PHP:
function hacerLogin(&$row)
{
    return array(
        
'status'        => LOGIN_SUCCESS,
        
'error_msg'        => false,
        
'user_row'        => $row,
    );
    

El fichero donde está todo el código se llama "auth_wpmu.php", y está localizado en "C:\xampp\htdocs\phpBb\includes\auth". Este fichero está configurado en el apartado "Authenticate" (o algo así) del Menú de Control de phpBb.

El problema surge cuando voy a hacer login, pues me dice lo siguiente:
Cita:
Se ha identificado correctamente
Ésto aparece cuando hace el
Código PHP:
return array(
    
'status'        => LOGIN_SUCCESS,
    
'error_msg'        => false,
    
'user_row'        => $row,
); 
de la función "hacerLogin".

Y en la URL pone: Como se puede ver, manda la información al fichero de login (ucp.php) y le manda el modo correcto (mode=login). Sin embargo, a los 3 segundos se redirecciona al home con la siguiente URL: Y sigo sin estar logueado en el foro phpBb3. ¿Qué está ocurriendo? Llevo horas mirando código y no soy capaz de saber el por qué ocurre esto.

¿Podría ayudarme alguien, por favor? ¡Muchas gracias!
  #2 (permalink)  
Antiguo 05/05/2009, 07:48
 
Fecha de Ingreso: enero-2008
Ubicación: Estado de México, México
Mensajes: 476
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: Login usando BD de Wordpress-MU

ok dejame instalo el mu para ver de que forma te puedo ayudar.
__________________
"Si necesitas ayuda para tu foro en phpBB solo buscanos en google como montatuforo y la obtendras"
  #3 (permalink)  
Antiguo 05/05/2009, 08:18
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Login usando BD de Wordpress-MU

Muchas gracias por todo, aunque tampoco quiero causar demasiadas molestias...

La verdad es que llevo más de 10 horas atrancado ahí, buscando información en Internet, probando diferentes métodos,...

A ver si puedo terminarlo y compartirlo con la comunidad, pues no hay mucho al respecto...

Un saludo y mil gracias!! :)
  #4 (permalink)  
Antiguo 05/05/2009, 08:50
 
Fecha de Ingreso: enero-2008
Ubicación: Estado de México, México
Mensajes: 476
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: Login usando BD de Wordpress-MU

mmmmmmm creo que encontre un plug que te podria servir mira http://wordpress.org/extend/plugins/phpbbauth/ de ahi te puedes basar o lo puedes usar
__________________
"Si necesitas ayuda para tu foro en phpBB solo buscanos en google como montatuforo y la obtendras"
  #5 (permalink)  
Antiguo 05/05/2009, 08:58
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Login usando BD de Wordpress-MU

No es exactamente lo que quiero, pero voy a ver si en el código puedo encontrar alguna solución.

Te comento con lo que sea! Gracias!
  #6 (permalink)  
Antiguo 05/05/2009, 09:44
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Login usando BD de Wordpress-MU

Ehy! No me sirve, pues lo que hace es hacer login en Wordpress con el password de phpBb.

Dice la documentación del plugin lo siguiente:
Cita:
Description: Authenticate in Wordpress using passwords from a phpBB installation
Por tanto, no hay nada al respecto de cómo hacer login en phpBb...

Gracias de todos modos! Sigo necesitando ayuda! :P
  #7 (permalink)  
Antiguo 05/05/2009, 09:54
 
Fecha de Ingreso: enero-2008
Ubicación: Estado de México, México
Mensajes: 476
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: Login usando BD de Wordpress-MU

mmmmm y tu quieres hacerlo al revez? que hagas el login desde el phpbb y tenga acceso al wpmu? ok pero primero que nada dime cada usuario tiene su blog?

tu quieres algo como esto pero con phpbb? http://hery.blaogy.org/2008/02/22/jo...-wordpress-mu/
__________________
"Si necesitas ayuda para tu foro en phpBB solo buscanos en google como montatuforo y la obtendras"

Última edición por Charles87; 05/05/2009 a las 10:06
  #8 (permalink)  
Antiguo 05/05/2009, 10:35
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Login usando BD de Wordpress-MU

Mi intención es que cuando yo introduzca los datos en phpBb, se compruebe que el Username y Password existen en la BD de Wordpress-MU.

Una vez que se confirme que dicho Username y Password coinciden con los de la Base de datos, se haga login en phpBb.

Mi intención actual no es que cuando yo haga login en WPMU se haga login en PHPBB ó viceversa, eso sería un problema quizás posterior.
  #9 (permalink)  
Antiguo 05/05/2009, 10:39
 
Fecha de Ingreso: enero-2008
Ubicación: Estado de México, México
Mensajes: 476
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: Login usando BD de Wordpress-MU

mmmmmmmm bueno pero me imagino que tambien estas encriptando la pass en WPMU como l hacen en phpBB no si no esto te creara muchos conflictos.
__________________
"Si necesitas ayuda para tu foro en phpBB solo buscanos en google como montatuforo y la obtendras"
  #10 (permalink)  
Antiguo 05/05/2009, 10:51
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Login usando BD de Wordpress-MU

Todo eso está ya solucionado.

El Password de WPMU está encriptado usando un salt md5, mientras que el de PHPBB está encriptada usando un md5 simplemente. Por tanto, para comprobar si el pass introducido por el usuario es correcto, hago lo siguiente:
- Si es para comprobar en WPMU: uso las funciones de WPMU donde le mandas el pass y el hash del pass de la BD y te dice si ambos pass son iguales.
- Si es para comprobar en PHPBB: uso la función propia de PHP: md5("password");

Te mando por privado el código para que sepas lo que estoy haciendo, aunque está todo probado y funcionando bien.

Repito que donde no funciona es cuando llamo a la función "hacerLogin", pues esta función hace un "return" con los datos necesarios para hacer el login (o así es como se hace en los otros ficheros "auth_xxx.php" que pertenecen al directorio "C:\xampp\htdocs\phpBb\includes\auth" y que vienen ya en la instalación de PHPBB).

La función comentada (hacerLogin), recibe un $row, que contiene la misma información que debe recibir el fichero que hace login (ucp.php).
  #11 (permalink)  
Antiguo 05/05/2009, 12:48
 
Fecha de Ingreso: enero-2008
Ubicación: Estado de México, México
Mensajes: 476
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: Login usando BD de Wordpress-MU

mmmm en tu funcion hacer login qu significa este simbolo & antes de $row ?

Código:
function hacerLogin(&$row)
__________________
"Si necesitas ayuda para tu foro en phpBB solo buscanos en google como montatuforo y la obtendras"
  #12 (permalink)  
Antiguo 05/05/2009, 13:47
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Login usando BD de Wordpress-MU

Pues que le envío la variable por referencia, eso es lo que significa el ampersand.
Lo pongo porque en los otros ficheros también se enviaban por referencia (o sea, con el ampersand).
  #13 (permalink)  
Antiguo 05/05/2009, 15:32
 
Fecha de Ingreso: enero-2008
Ubicación: Estado de México, México
Mensajes: 476
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: Login usando BD de Wordpress-MU

mmmmmmmmmmm pues esta raro no veo ningun error al codigo, ahora por otro lado tengo entendido que phpbb cuando hace login hace esto:

Código PHP:
/**
    * Authentication plug-ins is largely down to Sergey Kanareykin, our thanks to him.
    */
    
function login($username$password$autologin false$viewonline 1$admin 0)
    {
        global 
$config$db$user$phpbb_root_path$phpEx;

        
$method trim(basename($config['auth_method']));
        include_once(
$phpbb_root_path 'includes/auth/auth_' $method '.' $phpEx);

        
$method 'login_' $method;
        if (
function_exists($method))
        {
            
$login $method($username$password);

            
// If the auth module wants us to create an empty profile do so and then treat the status as LOGIN_SUCCESS
            
if ($login['status'] == LOGIN_SUCCESS_CREATE_PROFILE)
            {
                
// we are going to use the user_add function so include functions_user.php if it wasn't defined yet
                
if (!function_exists('user_add'))
                {
                    include(
$phpbb_root_path 'includes/functions_user.' $phpEx);
                }

                
user_add($login['user_row'], (isset($login['cp_data'])) ? $login['cp_data'] : false);

                
$sql 'SELECT user_id, username, user_password, user_passchg, user_email, user_type
                    FROM ' 
USERS_TABLE "
                    WHERE username_clean = '" 
$db->sql_escape(utf8_clean_string($username)) . "'";
                
$result $db->sql_query($sql);
                
$row $db->sql_fetchrow($result);
                
$db->sql_freeresult($result);

                if (!
$row)
                {
                    return array(
                        
'status'        => LOGIN_ERROR_EXTERNAL_AUTH,
                        
'error_msg'        => 'AUTH_NO_PROFILE_CREATED',
                        
'user_row'        => array('user_id' => ANONYMOUS),
                    );
                }

                
$login = array(
                    
'status'    => LOGIN_SUCCESS,
                    
'error_msg'    => false,
                    
'user_row'    => $row,
                );
            }

            
// If login succeeded, we will log the user in... else we pass the login array through...
            
if ($login['status'] == LOGIN_SUCCESS)
            {
                
$old_session_id $user->session_id;

                if (
$admin)
                {
                    global 
$SID$_SID;

                    
$cookie_expire time() - 31536000;
                    
$user->set_cookie('u'''$cookie_expire);
                    
$user->set_cookie('sid'''$cookie_expire);
                    unset(
$cookie_expire);

                    
$SID '?sid=';
                    
$user->session_id $_SID '';
                }

                
$result $user->session_create($login['user_row']['user_id'], $admin$autologin$viewonline);

                
// Successful session creation
                
if ($result === true)
                {
                    
// If admin re-authentication we remove the old session entry because a new one has been created...
                    
if ($admin)
                    {
                        
// the login array is used because the user ids do not differ for re-authentication
                        
$sql 'DELETE FROM ' SESSIONS_TABLE "
                            WHERE session_id = '" 
$db->sql_escape($old_session_id) . "'
                            AND session_user_id = {$login['user_row']['user_id']}"
;
                        
$db->sql_query($sql);
                    }

                    return array(
                        
'status'        => LOGIN_SUCCESS,
                        
'error_msg'        => false,
                        
'user_row'        => $login['user_row'],
                    );
                }

                return array(
                    
'status'        => LOGIN_BREAK,
                    
'error_msg'        => $result,
                    
'user_row'        => $login['user_row'],
                );
            }

            return 
$login;
        }

        
trigger_error('Authentication method not found'E_USER_ERROR);
    } 
y despues de pasar por el auth hace esto

Código PHP:
case 'login':
        if (
$user->data['is_registered'])
        {
            
redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
        }

        
login_box(request_var('redirect'"index.$phpEx"));
    break; 
quiza te falte incluir la funcion login para que de verdad te autentifique ya que segun veo tu solo estas dando un status y no estas procesando la autentificacion.
__________________
"Si necesitas ayuda para tu foro en phpBB solo buscanos en google como montatuforo y la obtendras"

Última edición por Charles87; 05/05/2009 a las 15:40
  #14 (permalink)  
Antiguo 05/05/2009, 16:10
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Login usando BD de Wordpress-MU

O sea, hago un include (ó require?) del fichero auth.php (es donde he visto que está la función "login" que me dices):
Código PHP:
include("C:\xampp\htdocs\phpBb\includes\auth.php"); 
ó
Código PHP:
require('C:\xampp\htdocs\phpBb\includes\auth.php'); 
Y en mi función "hacerLogin", hago un envío de la información a la función "login" de auth.php y luego hago el "return array" que tengo actualmente, quedando así:
Código PHP:
function hacerLogin(&$row)
{
    
$log_in login($username$passwordfalse10);
    
    return array(
        
'status'        => LOGIN_SUCCESS,
        
'error_msg'        => false,
        
'user_row'        => $log_in,
    );

Y lo que me devuelva "login" es lo que mando como "user_row", en vez de $row. Es posible que sea así, sí! :P

Gracias por la ayuda amigo! Tengo que irme a la cama, que mañana sino no soy capaz de levantarme para ir al trabajo! Mañana te comento si me fue bien, ok?

Muchas gracias! Un saludo!
  #15 (permalink)  
Antiguo 05/05/2009, 16:15
 
Fecha de Ingreso: enero-2008
Ubicación: Estado de México, México
Mensajes: 476
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: Login usando BD de Wordpress-MU

usa require(), ok me comentas como te fue y quiza mañana yo te pida ayuda con algo que no eh podido realizar haber si me das una idea o ayuda de codigo jejeje suerte y buenas noches.
__________________
"Si necesitas ayuda para tu foro en phpBB solo buscanos en google como montatuforo y la obtendras"
  #16 (permalink)  
Antiguo 06/05/2009, 07:29
 
Fecha de Ingreso: enero-2008
Ubicación: Estado de México, México
Mensajes: 476
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: Login usando BD de Wordpress-MU

y bueno como te fue?
__________________
"Si necesitas ayuda para tu foro en phpBB solo buscanos en google como montatuforo y la obtendras"
  #17 (permalink)  
Antiguo 06/05/2009, 11:21
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Login usando BD de Wordpress-MU

Ehy! Pues he estado cambiándolo, pero hay otros errores que he estado modificando. Estoy saturado, hace muchísimo calor en mi ciudad hoy y no puedo seguir con el mismo código... xD

Qué es lo que necesitas? Dime, a ver si puedo echarte una mano!
  #18 (permalink)  
Antiguo 06/05/2009, 11:43
 
Fecha de Ingreso: enero-2008
Ubicación: Estado de México, México
Mensajes: 476
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: Login usando BD de Wordpress-MU

Bueno ya te respondi en privado, si necesitas algo mas en tu codigo avisame y te lo desgloso.
__________________
"Si necesitas ayuda para tu foro en phpBB solo buscanos en google como montatuforo y la obtendras"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:17.