News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

Utilización de API

Started by nbalduvino, May 29, 2013, 11:47:56 AM

Previous topic - Next topic

nbalduvino

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

nbalduvino

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.

Advertisement: