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 <input type="text" name="username" id="username /"> <input type="password" name="password" id="password" /> <input type="submit" name="btnEnviar" id="btnEnviar" value="Enviar" />
phpbb.controller.php:
Código PHP:
Ver original<?php
/**
PHPBB3 :: AJAX LOGIN MOD
Escript que permite validar si el usuario fue logeado o no, e imprimira un valor TRUE OR FALSE para que sean recogidos con ajax
*/
//Aqui va la ruta donde se encuentra ubicado nuestro foro
$phpbb_root_path = 'NUESTRA DIRECCION DEL FORO';
switch($_POST['action'])
{
include($phpbb_root_path . 'common.php');
// Start session management
$user->session_begin();
$user->setup();
$auth->acl($user->data);
//Esto en phpbb es llenado con los datos del $_POST o $_GET, sin tener que llamarlo directamente
$username = request_var('username', '');
$password = request_var('password', '');
//Esta es la funcion magica que nos permite hacer el login
$auth->login($username, $password, true);
//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
if($user->data['is_registered'])
print "TRUE";
else
print "FALSE";
break;
}
?>
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$(document).ready(function(){
//Esto indica que sucedera algun evento, al hacer click a nuestro BOTON
$("#btnLogin").live('click',function(){
//Aqui estamos llamando a nuestra funcion logearphpbb, y le estamos enviando 2 parametros, los cuales son los valores que tienen nuestros input (username,password)
logearphpbb($("#username").val(),$("#password").val());
})
/*Esta funcion le va a enviar parametros por AJAX a nuestro controller, si se dan
cuenta son 3 los datos, la accion que se desea realizar, esto es muy importante
porque si cambian el nombre no podra ejecutar ni un codigo, ya que nuestro
controller esta recibiendo los datos de acuerdo a la accion que le enviemos
usando un switch-case que vendria ser como un if-else.
*/
function logearphpbb(username,password)
{
$.post('controller/phpbb.controller.php',{
//Enviando los parametros
action: 'loginPHPBB',
username: username,
password: password,
autologin: 'ON'}
,function(data){
/*Nuestro controller realizara una impresion (print), y la variable DATA lo va a
capturar, luego de eso hacemos un if y apartir de aca depdenera de ustedes que quieran realizar*/
if(data=='TRUE')
alert("Exito");
else
alert("Fracaso");
})
}
})
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