16.02.2017, 11:50
Hola, necesito un sistema que verifique al registrarse si el correo que introduce lo tiene alguien mas, pero no se como hacerlo, uso MySQL. Gracias.
OnPlayerConnect
mysql_format(g_SQL, Query, sizeof(Query), "SELECT Email FROM `usuarios` WHERE `Email` ='%e' LIMIT 1", GetName(playerid));
mysql_tquery(g_SQL, Query, "Check_Account", "d", playerid);
forward Check_Cuenta(playerid);
public Check_Cuenta(playerid)
{
new info[128];
if(cache_num_rows() > 0)
{
cache_get_value(0, "Email", PlayerInfo[playerid][Email], 50);
format(info, sizeof(info), "El Email %s se encuentra registrado!", PlayerInfo[playerid][Email]);
SendClientMessage(playerid, -1, info);
}
return 1;
}
case DIALOG_EMAIL: { if(response) { if(strfind(inputtext, "@", true) == -1 && strfind(inputtext, "hotmail.com", true) == -1 || strfind(inputtext, "@", true) == -1 && strfind(inputtext, "yahoo.com", true) == -1 || (strfind(inputtext, "@", true) == -1 && strfind(inputtext, "gmail.com", true) == -1)) return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Correo electronico", "Por favor, ingresa un email valido\nEjemplos: servidor@hotmail.com o servidor@yahoo.com y servidor@gmail.com", "Siguiente", "Cancelar"); { new correoe[128]; format(correoe, sizeof(correoe), "%s", inputtext); Jugador[playerid][correo] = correoe; Jugador[playerid][Ropa] = 7; ShowPlayerDialog(playerid, DIALOG_CIUDAD, DIALOG_STYLE_LIST, "їDonde Spawnear?", "-Los Santos\n-San Fierro\n-Las Venturas", "Ingresar", "Cancelar"); } } else { Kick(playerid); } }
forward bool:checkmail(mail[]); public bool:checkmail(mail[]) { // la query mide 47 bytes, y 128 es el tamano maximo de inputtext. podes achicarlo pero deberas chequear el len de inputtext en ondialogresponse new consulta[47+128]; mysql_format(base_datos, consulta, sizeof(consulta), "SELECT `mail` FROM `usuarios` WHERE `mail` = '%e'", mail); new Cache:cache = mysql_query(base_datos, consulta, true); // con el tercer parametro "true" le indicamos a la funcion que guarde resultado en cache. nos retorna el identificador del cache para despues liberar la memoria new resultado = cache_num_rows(); // guardamos el numero de filas devueltas para poder borrar el cache antes de retornar el resultado de la funcion cache_delete(cache); // liberamos la memoria que ocupo el cache if(resultado > 0) return false; // si la query nos devolvio algun resultado, el mail ya esta registrado, retornamos false (mail inutilizable) else return true; // de lo contrario, true (mail ok) }