Dilong Publicado 1 de Enero del 2019 Reportar Compartir Publicado 1 de Enero del 2019 Spoiler quest contraseña begin state start begin when 9005.chat."Recuperar contraseña(Registrarse)" begin local info,s = mysql_direct_query("SELECT account_id FROM player.registro_almacen") for i=1,info do if pc.get_account_id()==s[i].account_id then say("Ya estas registrado") return end end say_title("Npc") say("Hola "..pc.get_name().."") say("veo que esta es la primera vez[ENTER]que estas usando esta opcion") say("si te registras podras recuperar la[ENTER]contraseña del almacen") say("ingresando los datos que hayas puesto") local contraseña = select("Registrarse","Despues") say_title("Npc") say("Ingresa la pregunta secreta") say_reward("Maximo 20 caracteres") if contraseña == 1 then local pregunta = input() if pregunta == "" then say("error") return end if string.len(pregunta) > 20 then say_reward("Maximo 20 caracteres") return end say_title("Npc") say("Ingresa la respuesta secreta") say_reward("Maximo 20 caracteres") local respuesta = input() if respuesta == "" then say("error") return end if string.len(respuesta) > 20 then say_reward("Maximo 20 caracteres") return end mysql_direct_query("INSERT INTO player.registro_almacen(account_id, pregunta,respuesta) VALUES ('"..pc.get_account_id().."', '"..pregunta.."', '"..respuesta.."')") say_title("Npc") say_reward("Registrado") pc.setqf("intentos",3) say("Pregunta: "..pregunta.."") say("Respuesta: "..respuesta.."") say_reward("Si fallas tres (3) veces al ingresar[ENTER]los datos, tendras que esperar 24hs para[ENTER]volver a intentarlo") return end end when 9005.chat."GM Recuperar contraseña(Reiniciar)" with pc.is_gm() begin say_title("Npc:") say("Esto reiniciara el tiempo de espera para volver a[ENTER]ingresar los datos") say_reward("Esto solo afecta al pj GM") local rs = select("Reiniciar","Cerrar") if rs == 1 then pc.setqf("tiempo_uso",0) pc.setqf("contador",0) pc.setqf("intentos",3) return end end when 9005.chat."Recuperar contraseña" begin say_title("Npc") if get_time() < pc.getqf("tiempo_uso") then say("Faltan ".. pc.getqf("tiempo_uso") - get_time().." segundos para volver a escribir los datos") return end say("Escribe los datos") local info,s = mysql_direct_query("SELECT pregunta, respuesta FROM player.registro_almacen WHERE account_id = '"..pc.get_account_id().."'") say_reward("Pregunta: "..s[1].pregunta.."") local check = input() if check == "" then say("error") return end if string.len(check) > 20 then say_reward("Maximo 20 caracteres") return end if check == s[1].respuesta then local info2,s2 = mysql_direct_query("SELECT password FROM player.safebox WHERE account_id = '"..pc.get_account_id().."'") say_reward("Contraseña: "..s2[1].password.."") else say_reward("Incorrecto") say_reward("Intentos: "..pc.getqf("intentos").."") pc.setqf("intentos",pc.getqf("intentos")-1) pc.setqf("contador",pc.getqf("contador")+1) if pc.getqf("contador") >= 3 then pc.setqf("tiempo_uso", get_time() + 60*60*24) pc.setqf("contador",0) pc.setqf("intentos",3) return end end end end end Sql: Spoiler SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for registro_almacen -- ---------------------------- DROP TABLE IF EXISTS `registro_almacen`; CREATE TABLE `registro_almacen` ( `account_id` int(8) NOT NULL, `pregunta` varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL, `respuesta` varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL, PRIMARY KEY (`account_id`) USING BTREE ) ENGINE = MyISAM CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1; Avisen si les da algun problema Libre, iancu dumitrache, Break y 2 mas reacciono a esto 5 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Johan™ Publicado 9 de Enero del 2019 Reportar Compartir Publicado 9 de Enero del 2019 Este código en la parte de insertar preguntas y respuesta no hace una comprobación de caracteres no permitidos(Inyección SQL), los cual permitiría cambiar las preguntas y respuestas de todos los registros de la tabla entre otras cosas pequeñas e.e Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Dilong Publicado 9 de Enero del 2019 Author Reportar Compartir Publicado 9 de Enero del 2019 hace 26 minutos, Johan™ dijo: Este código en la parte de insertar preguntas y respuesta no hace una comprobación de caracteres no permitidos(Inyección SQL), los cual permitiría cambiar las preguntas y respuestas de todos los registros de la tabla entre otras cosas pequeñas e.e Faltaria comprobar eso, pero seguro que alguien se tome la molestia de intentar algo asi despues de robar la cuenta de alguien?, ademas si se reduce los intentos de tres a uno dudo que lo intente de nuevo 24hs despues hasta que lo logre xd Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Johan™ Publicado 9 de Enero del 2019 Reportar Compartir Publicado 9 de Enero del 2019 Justo ahora, Dilong dijo: Faltaria comprobar eso, pero seguro que alguien se tome la molestia de intentar algo asi despues de robar la cuenta de alguien? xd algunos guardan sus cosas en el almacén <,< solo digo, ademas se pueden hacer otras cosas como un "DROP a la base de datos" supongo e.e Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Mensajes recomendados
Unirse a la conversación
Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.