Necesitas un par de modificaciones pero si se puede.
El sistema que usa MyBB para iniciar sesión por fuerza pasa en algun momento por alguna redirección, por lo tanto no es compatible con AJAX.
Lo que puedes hacer es hacer los siguientes cambios:
Primero abre
member.php y localiza la siguiente linea:
Código:
// Redirect to the URL if it is not member.php
redirect(htmlentities($mybb->input['url']), $lang->redirect_loggedin);
Reemplaza esas 2 lineas por lo siguiente:
Código:
// Redirect to the URL if it is not member.php
if(!isset($mybb->input['remote_login']))
redirect(htmlentities($mybb->input['url']), $lang->redirect_loggedin);
else
exit();
En este caso, a tu formulario externo tendrias que agregarle el siguiente campo oculto:
Código:
<input name="remote_login" type="hidden" value="1" />
Y también cambiar el
action en tu forma a:
Código:
action='member.php?ajax=1'
Ajustalo a la carpeta donde se encuentre tu foro.
Esto no lo he probado por completo, pero deberá funcionar. No me voy a meter a detalles de AJAX por el momento, asumiré que tienes noción basica de jQuery o prototype. Realmente yo no conozco bien prototype pero si te podria ayudar si usas jQuery.
Ya solo bastaria que en tu forma (sea el framework que sea) haga submit por metodo post a tu forma por medio de AJAX y que capture cualquier texto desplegado que en este caso seria un mensaje de error en formato XML.
Lo que hace el codigo que te mostre es que si la forma contiene el elemento 'remote_login' entonces simplemente terminará el script de inicio de sesión sin cambiar a ninguna otra pagina. Y si hubo error será impreso y tu script de AJAX lo debera de capturar, ya muestras ese mensaje como quieras
Saludos.