[Pedido] -
Martin100200300 - 16.02.2017
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.
Respuesta: [Pedido] -
Eloy - 16.02.2017
Usa una consulta mysql
Verificas en Pawn
PHP код:
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);
PHP код:
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;
}
Respuesta: [Pedido] -
Martin100200300 - 16.02.2017
Hola, mira no supe como emplear tu metodo. Por eso te dejo el dialog mi versiуn de mysql es la R39-3
Код:
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);
}
}
Re: [Pedido] -
yutaruta - 18.02.2017
Код:
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)
}
ahora para chequear un mail, basta con agregar esta linea a la respuesta del dialogo, algo asi:
if(!checkmail(inputtext)) return ShowPlayerDialog(playerid, IDDETUDIALOGO, DIALOG_STYLE_MSGBOX, "blabla", "el mail ya esta registrado", "volver a intentar", "");// (previamente habiendo chequeado que sea un mail valido)
no lo probe, y hace bastante tiempo que no programo en pawn. pero deberia funcionar. en cualquier caso avisame y lo arreglamos.
EDIT: tene en cuenta que debes cambiar algunas cosas en el codigo de la funcion. `mail` cambialo por el nombre del campo de mail en tu base de datos, lo mismo con `usuarios`. base_datos cambialo por el handle de tu base de datos en tu gamemode. y IDDETUDIALOGO cambialo por el id del dialogo donde el user ingresa su email.
Respuesta: [Pedido] -
Martin100200300 - 18.02.2017
Simplemente el puto amo, muchas gracias amigo te debo 1
Re: Respuesta: [Pedido] -
yutaruta - 19.02.2017
Quote:
Originally Posted by Martin100200300
Simplemente el puto amo, muchas gracias amigo te debo 1
|
de nada bro, me alegro que te haya servido