Simple Machines Community Forum

SMF Support => Language Specific Support => Español (Spanish) => Topic started by: nbalduvino on May 29, 2013, 11:47:56 AM

Title: Utilización de API
Post by: nbalduvino on May 29, 2013, 11:47:56 AM
Tengo la versión de SMF 2.0 RC5 integrado con joomla, me va todo perfecto. Registro el usuario en joomla a la vez se da de alta en smf, y está todo integrado, ahora quiere hacer un login (para otra cosa) que valide sobre los usuarios de smf, ahora lo explico mejor.

Tengo un formulario  Usuario y contraseña, que quiero al confirmar comprobar que el usuario es quien dice ser, es decir validad sobre el smf dicho usuario, he visto que con las funciones    smf_setLoginCookie(); y    smf_authenticateUser(); podria hacerlo, teniendo el api.php pero no me devuelve nada. No sé si es el camino correcto, si la api no corresponde con la versión que tengo o si no hay forma.

¿alguien me podría ayudar?

Quoteinclude_once("smf_1-1_api.php");
   $password = $_POST["pwd"];
   $username = $_POST["username"];
   
   $cookiename = $smf_settings['cookiename'];
   unset($_COOKIE[$cookiename]);
   smf_setLoginCookie(3600, $username, $password, $encrypted = false);
   smf_authenticateUser();
   
   echo 'algo '. smf_authenticateUser() ;

Tengo este código de prueba, donde recibo usuario/password, y lo intento validar, deberia imprimir true o false, pero la función smf_authenticateUser() no devuelve nada.

El archivo api, tiene modificada una linea para obtener los datos de Settings.php que tengo local, ya que no está sobre el directorio de smf.

Quoterequire_once('Settings.php');


Muchas gracias
Title: Re: Utilización de API
Post by: nbalduvino on May 30, 2013, 05:29:37 AM
Bueno por si alguien anda buscando lo mismo despues de quemarme un poco la cabeza di con la clave.

Quoteinclude_once("smf_2_api.php");
   global $user_info;
   
   $password = $_POST["pwd"];
   $username = $_POST["username"];
   
   if (smfapi_authenticate($username, $password)){
      if(smfapi_login($username)){
         echo 'Conectado como: '. $user_info['name'];
      }
   }else{
      echo 'Error de Conexión';
   }

La información se pude encontrar en este hilo http://www.simplemachines.org/community/index.php?topic=453008.0

hay que agregar una linea en el archivo api que indique donde están los Settings (linea 588)

Quote// $settings_path = $_SERVER['DOCUMENT_ROOT'] . /path/to/Settings.php
en mi caso lo he dejado como
Quote$settings_path = 'Settings.php';

El "global $user_info;" es simplemente para poder imprimir el nombre de quien se ha logeado.

En resumidas cuentas con la función smfapi_authenticate($username, $password) podremos saber si el usuario que quiere entrar esta validando correctamente el usuario y contraseña; true/false son los valores devueltos. Con smfapi_login($username) le decimos a SMF que dicho usuario se ha conectado.