[Pedido]
#1

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.
Reply
#2

Usa una consulta mysql

Verificas en Pawn

PHP код:
OnPlayerConnect
mysql_format
(g_SQLQuerysizeof(Query), "SELECT Email FROM `usuarios` WHERE `Email` ='%e' LIMIT 1"GetName(playerid));
mysql_tquery(g_SQLQuery"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(infosizeof(info), "El Email %s se encuentra registrado!"PlayerInfo[playerid][Email]);
                
SendClientMessage(playerid, -1info);
        }
    return 
1;

Reply
#3

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);
		}
    }
Reply
#4

Код:
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.
Reply
#5

Simplemente el puto amo, muchas gracias amigo te debo 1
Reply
#6

Quote:
Originally Posted by Martin100200300
Посмотреть сообщение
Simplemente el puto amo, muchas gracias amigo te debo 1
de nada bro, me alegro que te haya servido
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)