Blog Reacción Estudio

¡Tu zona de aprendizaje!

Crear una sesión de usuario en SMF con la API «REST»

Si utilizais SMF (Simple machines forum) y queréis que vuestros usuarios puedan identificarse en vuestro sitio web desde vuestra página, sin la necesidad de entrar al foro para hacerlo, lo más normal es utilizar las funciones predeterminadas del SSI.php, exactamente con la función «ssi_login();«. Pero esta función es muy poco personalizable, ya que muestra un formulario estandar y bastante feo, además de que no podemos realizar la identificación usando Ajax.

Lo que vamos a aprender es a hacer nuestra propia identificacion, para ello debemos descargarnos la API «REST» para los foros SMF 2.0.

  • Primero copiamos el archivo «smf_2_api.php» al directorio donde se encuentra nuestro foro.
  • Creamos un nuevo archivo PHP que contendrá el formulario de identificación, además de mostrar un mensaje si el usuario ya se ha identificado:
<?php
	include("SSI.php");
	
	if ($context['user']['is_guest']){
		//mostramos el formulario de login
		echo "<form action='login.php' method='post'>
		      <input type='text' name='user' /><br />
		      <input type='password' name='pass' /><br />
		      <input type='submit' name='aceptar' value='Identificarse' />
		      </form>";
	}else{
		//el usuario está logeado
		ssi_welcome();
		echo "&nbsp;";
		//enlace para desconectarse
		ssi_logout("http://direccionamiento"); /* si pinchamos en el enlace de -logout-,después de cerrar la sesión, nos redireccionará a la dirección que le indiquemos. */
		
		//si es el admin mostramos el enlace del panel de administración.
		if ($context['user']['is_admin']){
			echo "<br /><br /><a href='#'>Ir al panel de administraci&oacute;n.</a>";
		}		
		
		
	}	
?>
  • Ahora vamos a crear el archivo «login.php» que es el encargado de comprobar los datos enviados por el formulario e identificar al usuario:
	require("smf_2_api.php");
	include("SSI.php");

	$usuario = $_POST['user'];
	$pass = $_POST['pass'];
	
	$reg = smfapi_authenticate($usuario,$pass); //comprueba el usuario y la contraseña.
	if($reg == true){
		$log = smfapi_login($usuario);	//login correcto, crea la sesión de usuario.
		if($log == true){
	             ssi_welcome();
		}else{
		     echo "error al crear la sesión.";
		}
	}else{
		echo "Usuario o contraseña incorrecto/a.";
	}

La API «REST» cuenta con otras funciones para trabajar con el foro SMF 2.0, para más información pinchar aquí.