Guten Morgen..
Ich wollte gerne bei der Email eingabe es so haben das mann @ und .de angeben muss nur wie mache ich sowas ?
LG
Guten Morgen..
Ich wollte gerne bei der Email eingabe es so haben das mann @ und .de angeben muss nur wie mache ich sowas ?
LG
Ich glaube das hilft dir weiter: "strfind"
Kleines Bespiel:
if(strfind("www.xxxxx.de", ".de", true) != -1)
{
SendClientMessage(playerid,-1, ".de wurde gefunden.");
}
Ich hoffe ich konnte dir weiter helfen. (Würde mich über einen Daumen hoch (Signatur) sehr freuen)
Mit freundlichen Grüßen German_ScripterHD
Du kannst mit der Funktion strfind den String durchlaufen und schauen, ob @ und .de dort enthalten ist.
Achte aber darauf, das manche E-Mail Adressen auch .com .net und sonst was haben können, und nicht nur .de
Schau dir die Funktion dazu mal an:
[wiki]strfind[/wiki]
ich habs jetzt so
if(strfind(inputtext,"@") == -1) return SendClientMessage(playerid,GRAU,"Die Email wurde nicht erkannt");
und wie erweitere ich das jetzt ?
so etwa ?
if(strfind(inputtext,"@ .de .com .net") == -1) return SendClientMessage(playerid,GRAU,"Die Email wurde nicht erkannt");
ja aber wenn er zb dann .de hat sagt er bei .net fehlt... ???
Schick mal bitte den Code wie du es gerade hast.
dann fragst du es so ab
if(strfind(inputtext,"@") == -1) return SendClientMessage(playerid,GRAU,"Die Email wurde nicht erkannt");
if(strfind(inputtext,".de") == -1)
else
{
//wurde erkannt
}
if(strfind(inputtext,".com") == -1) //usw...
{
//wurde erkannt
}
return SendClientMessage(playerid,GRAU,"Die Email wurde nicht erkannt");
Alles anzeigen
if(response)
{
if(strfind(inputtext,"@") == -1)
{
if(strlen(inputtext) <= 0) return SendClientMessage(playerid,0xAA3333AA,"Bitte ausfüllen!"),PlayAudioStreamForPlayer(playerid,"http://satrox.de/button.mp3"),ShowPlayerDialog(playerid,DIALOG_REGSTEP_3,DIALOG_STYLE_INPUT,"Wie ist deine E-mail?","Schreibe hier deine E-Mail bitte rein! danke","Weiter"," ");
strcat(SpielerInfo[playerid][pEmail],inputtext,128);
format(string, sizeof(string), "ok deine E-mail lautet %s Viel spaß auf Big City Life",SpielerInfo[playerid][pEmail]);
updatemysqlstr(playerid, "e-mail", inputtext);
SendClientMessage(playerid, COLOR_WHITE, string);
ShowPlayerDialog(playerid,DIALOG_Tutorial,DIALOG_STYLE_MSGBOX,"Tutorial"," Es folgt das Tutorial \n Du kannst das Tutorial überspringen. Es wird aber dringlichst empfohlen das Tutorial durchzulesen. \n Willst du das Tutorial durchlesen?","Ja","Nein");
RegistrationStep[playerid] = 0;
SpielerInfo[playerid][pRegfertig] = 1;
SpielerInfo[playerid][pHouseKey]= 501;
SpielerInfo[playerid][pRentHouseKey]= 501;
}
else
{
SendClientMessage(playerid,0xAA3333AA,"Bitte @ zeichen hinzufügen!!");
ShowPlayerDialog(playerid,DIALOG_REGSTEP_4,DIALOG_STYLE_INPUT,"Wie ist deine E-mail?","Schreibe hier deine E-Mail bitte rein! danke","Weiter"," ");
}
}
if(response == 0)
{
ShowPlayerDialog(playerid,DIALOG_REGSTEP_4,DIALOG_STYLE_INPUT,"Wie ist deine E-mail","Schreibe hier deine E-Mail rein","Weiter"," ");
}
So ist es am einfachsten:
if(strfind(inputtext,"@") != -1 && (strfind(inputtext,".de") != 1 || strfind(inputtext,".com") != -1))
{
//Hier sind jetzt @ und .de (oder halt .com) enthalten
}
else return SendClientMessage(playerid,GRAU,"Die Email wurde nicht erkannt");
habs jetzt so
Klappt es jetzt oder immer noch nicht?
ich komme leider mit
lol@lol durch..
Und was heißt das auf Deutsch?
Funktioniert das, oder nicht? Falls nicht, was genau funktioniert da nicht dran?
Und was heißt das auf Deutsch?
Funktioniert das, oder nicht? Falls nicht, was genau funktioniert da nicht dran?
es steht doch da....
und und is auf Deutsch
ich komme mit text@text durch ohne das ich .de oder .com usw machen muss
es steht doch da....und und is auf Deutsch
ich komme mit text@text durch ohne das ich .de oder .com usw machen muss
Schau dir mal deine Abfrage ganz genau an, dort sticht der Fehler quasi ins Auge.
Hier hab mal eine kleine Funktion geschrieben...sollte klappen
stock IsValidMailAddr(const string[])
{
new l = strlen(string),p_s,p;
if(l < 5 || strfind(string,",") != -1) return 0;
p_s = strfind(string,"@");
if(p_s == -1) return 0;
if(strfind(string,"@",false,p_s+1) != -1) return 0;
p = strfind(string,".",false,p_s);
if(p == -1 || p_s == p+1) return 0;
for(new i=p+1; i!=-1; i=strfind(string,".",false,p+1)) p=i;
return !(p+1==l);
}
Alles anzeigen
Kaliber:
Scheinbar leicht buggy.
Deine Abfrage mit der Position des Punktes (".") sah mir ein wenig komisch aus.
So habe ich mal einige Versuche gemacht, und ein "printf" ans Ende deiner Funktion gehängt.
public OnGameModeInit()
{
IsValidMailAddr("heinrich@hotmail.de");
IsValidMailAddr("heinrich@.dehotmail");
IsValidMailAddr("heinrich.de@hotmail");
IsValidMailAddr("heinrichde.@hotmail");
}
// by Kaliber
stock IsValidMailAddr(const string[])
{
new l = strlen(string),p_s,p;
if(l < 5 || strfind(string,",") != -1) return 0;
p_s = strfind(string,"@");
if(p_s == -1) return 0;
if(strfind(string,"@",false,p_s+1) != -1) return 0;
p = strfind(string,".",false,p_s);
if(p == -1 || p_s == p+1) return 0;
for(new i=p+1; i!=-1; i=strfind(string,".",false,p+1)) p=i;
printf("%s = %b",string,!(p+1==l));
return !(p+1==l);
}
Von den 4 Emails ist nur eine (die oberste) richtig. Aber 2 Emails kommen durch:
[21:35:05] heinrich@hotmail.de = 1
[21:35:05] heinrich@.dehotmail = 1
@Tusk das ist nicht das einzige Problem der Funktion, sie lässt sogar troll EMailadressen zu.
sowie
<>@><.<<
.@ab..d oder
..@d.
das mal so als beispiel.
Ich würde an dieser Stelle eher regex empfehlen.
http://www.regular-expressions.info/email.html
und das passende Plugin: http://forum.sa-mp.com/showthread.php?t=247893
Hmmm anstatt das Plugin zu nutzen könnte man auch einen HTTP Request machen und mit PHP prüfen...
Wenn man es zu 100% validiert haben will....
Aber fürs erste sollte das reichen:
stock IsValidMailAddr(const string[])
{
new l = strlen(string),p_s;
if(l < 5 || strfind(string,",") != -1) return 0;
p_s = strfind(string,"@");
if(p_s == -1) return 0;
if(strfind(string,"@",false,p_s+1) != -1) return 0;
if(strfind(string,".",false,p_s) == -1 || string[p_s+1] == '.' || string[p_s-1] == '.') return 0;
return (('A' <= string[l-1] <= 'Z' || 'a' <= string[l-1] <= 'z'));
}