@ und .de im inputtext abfrage

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ich glaube das hilft dir weiter: "strfind"


    Kleines Bespiel:


    C
    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) :rolleyes:


    Mit freundlichen Grüßen German_ScripterHD :thumbup:


    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");

  • Da bin ich mir jetztrnicht ganz sicher, aber ich meine man muss es einzeln machen also so:


    C
    if(strfind(inputtext,"@") == -1) return SendClientMessage(playerid,GRAU,"Die Email wurde nicht erkannt");
    if(strfind(inputtext,".de") == -1)
    if(strfind(inputtext,".com") == -1) //usw...


    Mit freundlichen Grüßen
    German_ScripterHD

  • dann fragst du es so ab


  • 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");

  • Beitrag von Xtrats ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Und was heißt das auf Deutsch? :D
    Funktioniert das, oder nicht? Falls nicht, was genau funktioniert da nicht dran?

  • Hier hab mal eine kleine Funktion geschrieben...sollte klappen :)



    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • 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

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • 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'));
    }

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    Einmal editiert, zuletzt von Kaliber ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen