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

[ APORTE ] Login externo PHPBB3 con AJAX :o

Estas en el tema de [ APORTE ] Login externo PHPBB3 con AJAX :o en el foro de Sistemas de gestión de contenidos en Foros del Web. Login externo PHPBB3 con AJAX Luego de cranear un rato, pude ayar la solucion el problema en si no era el AJAX, sino tratar de ...
  #1 (permalink)  
Antiguo 07/10/2010, 14:26
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 11 años, 5 meses
Puntos: 31
[ APORTE ] Login externo PHPBB3 con AJAX :o

Login externo PHPBB3 con AJAX
Luego de cranear un rato, pude ayar la solucion el problema en si no era el AJAX, sino tratar de entender que funcion realiza el logeo, y buscando en foros en INGLES pude encontrar la funcion para adaptarla a mi AJAX


Requerimientos:
- Jquery
- Saber algo de PHP

Explicacion
El ejercicio estara realizado netamente con JQuery por su facil uso de AJAX.

Crearemos 3 archivos:

login.view.html: este contendra nuestro codigo html para el formulario

Código HTML:
Ver original
  1. <label for="username">Usuario</label>
  2.   <input type="text" name="username" id="username /">
  3. <label for="password">Password</label>
  4.   <input type="password" name="password" id="password" />
  5.   <input type="submit" name="btnEnviar" id="btnEnviar" value="Enviar" />

phpbb.controller.php:

Código PHP:
Ver original
  1. <?php
  2. /**
  3. PHPBB3 :: AJAX LOGIN MOD
  4. Escript que permite validar si el usuario fue logeado o no, e imprimira un valor TRUE OR FALSE para que sean recogidos con ajax
  5. */
  6.  
  7. //Aqui va la ruta donde se encuentra ubicado nuestro foro
  8. $phpbb_root_path = 'NUESTRA DIRECCION DEL FORO';
  9.  
  10. switch($_POST['action'])
  11. {
  12.     define('IN_PHPBB', true);
  13.     $phpEx = substr(strrchr(__FILE__, '.'), 1);
  14.     include($phpbb_root_path . 'common.php');
  15.     // Start session management
  16.     $user->session_begin();
  17.     $user->setup();
  18.     $auth->acl($user->data);
  19.    
  20.         //Esto en phpbb es llenado con los datos del $_POST o $_GET, sin tener que llamarlo directamente
  21.     $username = request_var('username', '');
  22.     $password = request_var('password', '');
  23.        
  24.         //Esta es la funcion magica que nos permite hacer el login 
  25.     $auth->login($username, $password, true);
  26.        
  27.     //Luego hecho esto, hacemos un if a $user->data['is_registered'], si este bota TRUE es porque ha sido logeado, sino los datos fueron incorrectos
  28.     if($user->data['is_registered'])
  29.         print "TRUE";
  30.     else
  31.         print "FALSE"; 
  32.        
  33.     break;
  34. }
  35.  
  36. ?>


Basicamente usamos la funcion de phpBB que usa para logear, la cual es esta

Cita:
$auth->login($username, $password, true)
Como dije arriba, que phpbb recibe los DATOS get y post por una funcion propia de ellas, sin tener que llamarlos asi $_POST['username'], ellos usan esto

Cita:
request_var('username', '');
Asi que los parametros que enviaremos en nuestro formulario HTML, los input deben tener como nombre username y password

Ok, ahora vamos al javascript( Jquery )
Regresamos a nuestro login.view.html para modificar algunos detalles, tenemos que agregar la libreria de jquery, la bajamos de http://jquery.com/ y luego la insertamos a nuestro html, y creamos un nuevo archivo yo le puse de nombre phpbb.js

phpbb.js: este archivo contedra el siguiente codigo

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.    
  3.         //Esto indica que sucedera algun evento, al hacer click a nuestro BOTON
  4.     $("#btnLogin").live('click',function(){
  5.                 //Aqui estamos llamando a nuestra funcion logearphpbb, y le estamos enviando 2 parametros, los cuales son los valores que tienen nuestros input (username,password)
  6.         logearphpbb($("#username").val(),$("#password").val());
  7.     })
  8.    
  9. /*Esta funcion le va a enviar parametros por AJAX a nuestro controller, si se dan
  10. cuenta son 3 los datos, la accion que se desea realizar, esto es muy importante
  11. porque si cambian el nombre no podra ejecutar ni un codigo, ya que nuestro
  12. controller esta recibiendo los datos de acuerdo a la accion que le enviemos
  13. usando un switch-case que vendria ser como un if-else.
  14. */
  15.     function logearphpbb(username,password)
  16.     {
  17.         $.post('controller/phpbb.controller.php',{
  18.                                //Enviando los parametros
  19.                 action: 'loginPHPBB',
  20.                 username: username,
  21.                 password: password,
  22.                 autologin: 'ON'}
  23.             ,function(data){
  24. /*Nuestro controller realizara una impresion (print), y la variable DATA lo va a
  25. capturar, luego de eso hacemos un if y apartir de aca depdenera de ustedes que quieran realizar*/
  26.                 if(data=='TRUE')
  27.                                     alert("Exito");
  28.                                 else
  29.                                     alert("Fracaso");
  30.  
  31.         })
  32.     }
  33. })

Nuestro controller respondera TRUE or FALSE en formato STRING, si es TRUE la session fue incializada, si es FALSE los datos etsan malos.


Cualquer duda o sugerencia/modificacion/aclarion/insulto por aqui mismo
  #2 (permalink)  
Antiguo 07/10/2010, 15:46
Avatar de mandrake88  
Fecha de Ingreso: septiembre-2009
Ubicación: Argentina
Mensajes: 328
Antigüedad: 10 años, 1 mes
Puntos: 13
Respuesta: [ APORTE ] Login externo PHPBB3 con AJAX :o

Buen aporte, solo una correcion para hacerle, estas usando mal el request_var.

El campo username y password deberian ser leidos asi:

Código PHP:
Ver original
  1. $username = request_var('username', '', true);
  2. $password = request_var('password', '', true);

Mas informacion sobre el uso del request_var:

http://wiki.phpbb.com/display/DEV/Function.request+var

Con respecto al campo password, se que phpbb hace algo mas, si te fijas la funcion login_box(...) del archivo functions.php usa un variable $credential, la verdad que no me acuerdo en que consiste, creo que era para el login como admin. Despues con mas tiempo te averiguo y te digo.

p.d: estas usando un framework MVC no? xD Los nombres de los archivos te delatan ^^

Última edición por mandrake88; 07/10/2010 a las 16:04
  #3 (permalink)  
Antiguo 07/10/2010, 16:23
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 11 años, 5 meses
Puntos: 31
Respuesta: [ APORTE ] Login externo PHPBB3 con AJAX :o

hahaha no es que use un framework MVC, sino que ya me acostumbre a programar todo usando MVC, que lo implemento en mi propio framework...

Gracias por la correccion colega
  #4 (permalink)  
Antiguo 02/04/2011, 13:56
 
Fecha de Ingreso: abril-2002
Mensajes: 186
Antigüedad: 17 años, 5 meses
Puntos: 2
Respuesta: [ APORTE ] Login externo PHPBB3 con AJAX :o

No es por nada pero no funciona...
El switch no tiene ningún case x: y por tanto simplemente da error de sintaxis.
Un saludo.

Etiquetas: ajax, externo, login, phpbb, aportes
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:57.