Registro automático

Started by FirstName LastName, December 04, 2015, 11:51:54 PM

Previous topic - Next topic

FirstName LastName

Buenas. Les comento.

El registro de usuarios en mi foro SMF está deshabilitado, no pueden registrarse manualmente, si no que ésto es automático a través de un medio externo con el lenguaje de programación PAWN. Al los usuarios crear una cuenta a través de ese medio externo, se agrega en una tabla usuarios sus datos y demás info que se le pidió al registrarse ahí, a la vez en la tabla smf_members se hace lo mismo, solo que así:

new string2[128],day,month,year;
                getdate(year,month,day);
                format(string2, sizeof(string2), "%s", inputtext); format(PlayerInfo[playerid][pPassword], 144, "%s",inputtext);
                format(Query, sizeof(Query), "INSERT INTO `smf_members` (member_name, passwd, real_name) VALUES ('%s', '%s','%s')",pName,inputtext,pName);
                mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii", 0, playerid);
                format(Query, sizeof(Query), "INSERT INTO `usuarios` (username, password,Registro,IPRegistro) VALUES ('%s','%s','%d/%02d/%02d','%s')",pName,inputtext,year,month,day,PlayerInfo[playerid][IP]);
                mysql_function_query(Conecction, Query, true, "OnQueryFinish", "ii", 0, playerid);


Bien, hasta acá vamos. Ahí se crearía la cuenta en el foro SMF del usuario en cuestión con sus respectivos datos y además, en usuarios el nombre, la contraseña, la fecha de registro y la IP de registro.




Algo importante: apenas un usuario se registra, en la tabla de usuarios su nivel es 1.
Lo que busco hacer es que la cuenta del foro SMF pueda usarse o se active recién cuando la columna nivel en usuarios del jugador sea de valor 2. Es decir, que la cuenta se cree como está ahora y mostré arriba en el código normal, pero que solo se pueda usar al ser nivel 2.

¿Hay manera de detectar al loguearse en SMF ésto que menciono? Habría que buscar en la tabla usuarios y verificar el nivel. ¿Cómo puedo hacerlo, usando qué? Nunca realicé algo similar de verificar las variables.

Al intentar loguearse sin ser nivel 2 o más, saltaría un mensaje como el siguiente:

Quote¡Un error ha ocurrido! (por defecto en SMF).
Necesitas ser nivel 2 en el juego para activar tu cuenta en el foro.

Espero se haya entendido mi pedido, gracias.

PD: Ambas tablas están en la misma base de datos.

Gluz

Ahora que lo mencionas, ingresas directamente los datos en la tabla smf_members desde tu aplicación? porque esa no es la forma correcta de registrar un usuario, ya que el foro internamente al registrar un usuario hace algunas otras cosas aparte de solo ingresar los datos a la tabla smf_members. Por ejemplo SMF revisa que no se use un email registrado para registrar una cuenta, o hace un hash de la contraseña para guardarla en la base de datos, ya que no es solo la contraseña, así que no es buena idea guardar la contraseña en texto plano directamente, aunque el foro creo que luego hace la comprobación y hace el hash automáticamente la primera vez que inician sesión, no es una buena práctica hacer eso. Los nombres de usuario no pueden llevar ciertos caracteres, por lo que si los metes directamente en la base de datos puede que nunca los reconozca dependiendo del caracter usado y de la colación de la base de datos.

La forma correcta es usar hooks de integración para registrar un usuario, o en su defecto llamar directamente al archivo /Sources/Subs-Members.php y usar la función registerMember() para registrar correctamente un usuario en el foro y que se actualice todo lo necesario, aunque esto tiene que ser desde PHP.

Leyendo un poco sobre PAWN, encontré esto que te puede servir para correr código PHP desde PAWN en el servidor, de ese modo creo que podrías usarlo para usar la función del foro para registrar un usuario, pero como no se nada de PAWN mas allá de eso no te puedo ayudar.


En cuanto a la pregunta sobre que esté en nivel 1 y que solo pueda usarse al estar en nivel 2 eso en SMF se puede usar como cuenta no activada que esté esperando aprobación del administrador al registrarla y para pasar al nivel 2 puedes modificar directamente el valor is_activated de la tabla smf_members, ya que eso no requiere hacer nada mas. Y puedes cambiar el texto para la activación por administración en los archivos de idioma para que diga lo que quieres sobre que necesitan ser nivel 2, en eso no hay tanto problema.

Advertisement: