[Ayuda] Sistema de cuentas
#1
Hola queria saber como se hace para que puedan cambiar de password a traves de una opcion al sistema de cuentas de r0ma. Lo de la opcion y todo eso es facil pero lo que quiero saber es como hacer para que se pueda cambiar la contraseña.
(08/10/2014, 10:50 PM)meTaLiCroSS escribió: Siento que en este foro viven en una competencia, en vez de preocuparse del contenido se preocupan de la gente, nisiquiera de eso, de sus actitudes por muy buenas o malas que sean, que clase de convivencia se puede llegar con aquello? Siempre la misma mierda en todos lados, progresen de una vez

**************************************************

Como hacer una Base de Datos para Sistema de Cuentas by r0ma
Responder
#2
Tenes que crear un messagemode
Código PHP:
register_clcmd("CAMBIAR_PASSWORD""MM_Cambiar"
Ahora creamos la función:
Código PHP:
public MM_Cambiar(id)
{
    static 
iPass[32]
    
read_args(iPasscharsmax(iPass))
    
remove_quotes(iPass)
    
trim(iPass)

    if (
equal(g_password[id], iPass)) return; // Esto es cuando la contraseña es la misma que la nueva contraseña
 
    
g_password[id] = iPass
    client_print
(idprint_center"Cambiaste tu contraseña correctamente")

Por último, cuando queres usar este comando pones
Código PHP:
client_cmd(id"messagemode CAMBIAR_PASSWORD"

Con eso te tiene que funcionar Guiño
Suerte
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#3
Axel lee bien
Cita:Lo de la opcion y todo eso es facil pero lo que quiero saber es como hacer para que se pueda cambiar la contraseña.
Esta pidiendo como debe ser la consulta para la db; simplemente fíjate como hace el guardar r0ma y guarda la nueva contraseña en la db
Enviado desde android
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#4
Código PHP:
formatexszQuerycharsmaxszQuery ), "UPDATE %s SET Password=^"%s^" WHERE Usuario=^"%s^""szTableszNewPasswordg_usuarioid ]); 
Responder
#5
(14/06/2014, 10:08 PM)mongito100 escribió: Axel lee bien
Cita:Lo de la opcion y todo eso es facil pero lo que quiero saber es como hacer para que se pueda cambiar la contraseña.
Esta pidiendo como debe ser la consulta para la db; simplemente fíjate como hace el guardar r0ma y guarda la nueva contraseña en la db
Enviado desde android
Ahh perdón.. Estoy re idiota últimamente :C
Aparte de lo que yo te mandé. Ahí es donde seteas la consulta, pero no hace falta también actualizar el Usuario, con la contraseña sola basta... Supongo
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#6
Pero donde iria esto
Código PHP:
formatexszQuerycharsmaxszQuery ), "UPDATE %s SET Password=^"%s^" WHERE Usuario=^"%s^""szTableszNewPasswordg_usuarioid ]); 
(08/10/2014, 10:50 PM)meTaLiCroSS escribió: Siento que en este foro viven en una competencia, en vez de preocuparse del contenido se preocupan de la gente, nisiquiera de eso, de sus actitudes por muy buenas o malas que sean, que clase de convivencia se puede llegar con aquello? Siempre la misma mierda en todos lados, progresen de una vez

**************************************************

Como hacer una Base de Datos para Sistema de Cuentas by r0ma
Responder
#7
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <sqlx>

#define QUERY_THREAD

public plugin_init()
{
    
register_plugin("ASD""0.1""Kane")
    
register_clcmd("CAMBIAR_PASSWORD""MM_Cambiar"
}

public 
MM_Cambiar(id)
{
    static 
iPass[35// el de roma es con md5
    
iPass[0] = EOS
    read_args
(iPasscharsmax(iPass))
    
remove_quotes(iPass)
    
trim(iPass)
    
    
md5(iPassiPass)
    
    if (
equal(g_password[id], iPass))
    {
        
client_print(idprint_center"Tu nueva contrasenia es igual a la anterior, intentalo de nuevo")
        
client_cmd(id"messagemode CAMBIAR_PASSWORD")
        
        return 
PLUGIN_HANDLED;
    }
    else
    {
        
g_password[id] = iPass
        
        
#if defined QUERY_THREAD
        
        
new g_query[250], data[1]
        
data[0] = id
        formatex
(g_querycharsmax(g_query), "UPDATE `table` SET `Password`='%d' WHERE `Cuenta`=^"%s^" AND `Password`='%d'"iPassg_usuario[id], g_password[id])
        
SQL_ThreadQuery(*db_tuple*, "query_handler_newpw"g_querydata1)
        
        
#else
        
        
SQL_QueryAndIgnore(*db_tuple*, "UPDATE `table` SET `Password`='%d' WHERE `Cuenta`=^"%s^" AND `Password`='%d'"iPassg_usuario[id], g_password[id])
        
client_print(idprint_center"Cambiaste tu contraseña correctamente")
        
        
#endif        
    
}
}

#if defined QUERY_THREAD
public query_handler_newpw(failstateHandle:queryerror[], errnumdata[], sizeFloat:queuetime)
{
    if (
failstate TQUERY_SUCCESS)
    {
        
log_to_file("sql_error.txt""Error de %s: %s (%i)", (failstate == TQUERY_QUERY_FAILED) ? "conexion" "query"errnumerror))
        return;
    }
    else
        
client_print(data[0], print_center"Cambiaste tu contraseña correctamente")
    
    return 
PLUGIN_CONTINUE;
}
#endif 
Un ejemplo, te lo deje a gusto, para que eligas si lo queres como thread o mandas la consulta de una sin importar el resutlado ( SQL_QueryAndIgnore )
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder
#8
1. Busca este enum:
Código PHP:
enum
{
    
REGISTRAR_CUENTA,
    
LOGUEAR_CUENTA,
    
CARGAR_DATOS,
    
GUARDAR_DATOS,
    
CAMBIAR_PASSWORD
}; 
Le agregas el CAMBIAR_PASSWORD.

2. Agregas al plugin_init:
Código PHP:
public plugin_init()
{
    
register_clcmd("CAMBIAR_PASSWORD""cambiar_password"


3. Funcion para cambiar password:
Código PHP:
public cambiar_password(id)
{
    new 
szPass[34]
    
read_args(szPasscharsmax(szPass))
    
remove_quotes(szPass)
    
trim(szPass)
    
    
md5(szPassszPass)
    
    if (
equal(g_password[id], szPass))
    {
        
client_print(idprint_center"Tu clave nueva es igual a la actual.")
        
client_cmd(id"messagemode CAMBIAR_PASSWORD")
    }
    else
    {
        
g_password[id] = szPass
        
        
new szQuery[250], szData[2]
        
szData[0] = id
        szData
[1] = CAMBIAR_PASSWORD

        formatex
szQuerycharsmaxszQuery ), "UPDATE %s SET Password=^"%s^" WHERE Usuario=^"%s^""szTableszPassg_usuarioid ])

        
SQL_ThreadQueryg_hTuple"DataHandler"szQueryszData);
    }

    return 
PLUGIN_HANDLED;


4. Editas el DataHandler(), agregas esto al switch (failstate) debajo de GUARDAR_DATOS:
Código PHP:
case CAMBIAR_PASSWORD: {
if( 
failstate TQUERY_SUCCESS )
    
client_printidprint_chat"%s Error al intentar cambiar la clave."szPrefix );
            
else
    
client_printidprint_chat"%s Clave cambiada correctamente."szPrefix );


5. Para que un usuario pueda cambiar su clave:
Código PHP:
public cambiar_mi_clave(id)
{
    
client_cmd(id"messagemode CAMBIAR_PASSWORD");

PD: Me basé un poco en el code de Kane.
Responder
#9
(15/06/2014, 04:21 PM)Mario AR. escribió:
Código PHP:
public cambiar_password(id)
{
    new 
szPass[34]
    
read_args(szPasscharsmax(szPass))
    
remove_quotes(szPass)
    
trim(szPass)
    
    
md5(szPassszPass)
    
    if (
equal(g_password[id], szPass))
    {
        
client_print(idprint_center"Tu clave nueva es igual a la actual.")
        
client_cmd(id"messagemode CAMBIAR_PASSWORD")
        
        return 
PLUGIN_HANDLED;
    }
    else
    {
        
g_password[id] = szPass
        
        
new szQuery[250], szData[2]
        
szData[0] = id
        szData
[1] = CAMBIAR_PASSWORD

        formatex
szQuerycharsmaxszQuery ), "UPDATE %s SET Password=^"%s^" WHERE Usuario=^"%s^""szTableszNewPasswordg_usuarioid ])

        
SQL_ThreadQueryg_hTuple"DataHandler"szQueryszData);
    }

Undefined Symbol: szNewPassword
pone g_password[id]
ajjaja
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder
#10
(15/06/2014, 05:01 PM)Kane escribió: Undefined Symbol: szNewPassword
pone g_password[id]
ajjaja

Lapsus Whatdone
Responder
#11
Creo q la función cambiar pw tiraría warning por q te falta un return
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#12
(15/06/2014, 06:51 PM)mongito100 escribió: Creo q la función cambiar pw tiraría warning por q te falta un return

Seee... fixed.
Responder
#13
Código PHP:
register_clcmd"CAMBIAR_PASSWORD""newcambiar_password" ); 
Código PHP:
public cambiar_passwordid ) {
    
read_argsg_usuarioid ], charsmaxg_usuario[ ] ) );
    
remove_quotesg_usuarioid ] );
    
trimg_usuarioid ] );
    
    
client_cmdid"messagemode CAMBIAR_PASSWORD" );
    
    return 
PLUGIN_HANDLED;
}
public 
newcambiar_password(id)
{
    static 
newpassword[34]
    new 
szQuery128 ], iData];
    
    
iData] = id;
    
iData] = GUARDAR_DATOS;
    
    
read_args(g_newpasswordid ], charsmax(g_newpassword[]))
    
remove_quotes(g_newpasswordid ])
    
trim(g_newpasswordid ])
    
    if( !
is_user_connectedid ) )
    {
        
server_cmd("kick #%d ^"Ocurrio un error con tu usuario^""get_user_userid(id))
        return
    }
    else if(
equal(g_passwordid ], g_newpasswordid ]))
    {
        
/*ColorChat(id, GREEN, "%s^x01 La nueva^x04 Contraseña^x01 es igual a la contraseña actual", g_szPrefix)*/
        
        
set_hudmessage(2552552550.0250.2006.06.00.01.0)
        
ShowSyncHudMsg(idg_SyncHud "La nueva contraseña es igual a la contraseña actual")
        
        return
    }
    else if(
equal(g_newpasswordid ], ""))
    {
        
/*ColorChat(id, GREEN, "%s^x01 La nueva^x04 Contraseña^x01 debe tener por lo menos 4 caracteres", g_szPrefix)*/
        
        
set_hudmessage(2552552550.0250.2006.06.00.01.0)
        
ShowSyncHudMsg(idg_SyncHud "La nueva contraseña debe tener por lo menos 4 caracteres")
        
        return
    }
    
    
/*ColorChat(id, GREEN, "%s^x01 Tu nueva^x04 Contraseña^x01 es:^x04 %s", g_szPrefix, g_newpassword[ id ])*/
    
    
set_hudmessage(2552552550.0250.2006.06.00.01.0)
    
ShowSyncHudMsg(idg_SyncHud "Tu contraseña se cambio exitosamente^nAhora tu contraseña es: %s"g_newpasswordid ])
    
    
md5g_newpasswordid ], newpassword );
    
    
formatexszQuerycharsmaxszQuery ), "UPDATE %s SET Password='%s' WHERE id='%d'"szTable,newpassword,g_idid ] );
    
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
    
    


asi lo tengo yo fijate lo puedes poner en el tuyo
Pd: por gonza
[Imagen: tumblr_mt8w6d7yz11rn3500o1_400.gif]
Responder
#14
hice todos los pasos que comento mario ar pero me salen logs diciendo lo siguiente : Run time error 10: native error (native "SQL_FreeHandle")

y ahora ya no me tira logs que raro... ignoren mi mensaje Whatever
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)