substr - strlen Überschneidung (String Abfrage)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • substr - strlen Überschneidung (String Abfrage)

    Hi,
    ich wollte eine emailadresse die per POST Methode
    übergeben wird abprüfen, ob ein gültiges @ Zeichen
    darin enthalten ist, allerdings krieg ich das nicht so hin
    wie ich das haben wollte, ich hoffe ihr könnt mir helfen,
    hier ein Ausschnitt meines Codes:

    PHP-Code:
    $emailCorrect false;
        
    for(
    $i=0;$i<strlen($_REQUEST['Email']);$i++)
    {
        if((
    substr($_REQUEST['Email'],i,1) == "@"))
        {
            
    $emailCorrect true
        }
    }

    //usw....... 
    Der spuckt mir anscheinend immer true raus.

    danke schon mal, mfg darki
    Zuletzt geändert von darki777; 20.09.2006, 16:03.

  • #2
    PHP-Code:
    if(substr($_REQUEST['Email'],i,1);    // MUSS DA NET N $i   stehen ? 
    edit: würds allerdings eh mit $_POST['Email'] machen... arbeite nie mit REQUEST...
    edit2: ähhh wieso spuckt der immer true aus bei der schleife???

    Zuletzt geändert von arkos; 20.09.2006, 16:05.
    **********
    arkos
    **********

    Kommentar


    • #3
      Schau lieber mal ins Manual zu preg_match .. Da findest du eine sichere Methode die Richtigkeit einer Mailadresse zu verifizieren.
      gruss Chris

      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

      Kommentar


      • #4
        Oje, und ich guck und guck und find den Fehler einfach ned, blödes i ^^

        Danke für die Tips.

        Werd mir das mit der preg_match methode mal durchlesen, thx.

        mfg darki

        Kommentar


        • #5
          machs doch lieber so:

          if (strpos($_POST['Email'], '@' , 1) !== false) { // offset 1 weil bei ner emailadresse @ nicht an der 1. stelle stehen darf
          // "gültig" (bzw. enthält ein @ an nicht-erster stelle)
          }

          allerdings würde ich dir empfehlen die adresse mit preg_match zu prüfen.

          Kommentar


          • #6
            wie schon oben von arkos bemerkt, fehlt ein $.

            anstatt

            if((substr($_REQUEST['Email'],i,1) == "@"))

            sollte

            if((substr($_REQUEST['Email'],$i,1) == "@"))

            stehen.

            auch edit2: logischerweise sollte es allerdings immer falsch ergeben. Dass es immer true gibt, muss noch an was anderem liegen.
            Zuletzt geändert von sternm; 20.09.2006, 16:57.

            Kommentar


            • #7
              Habs nun mit if(preg_match("/@/", $_POST['Email']))
              gelöst, substr ist hier etwas umständlicher, allerdings
              versteh ich noch nicht ganz die syntax des suchmusters.

              z.B.
              '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*'
              '@([-a-z0-9]+\.)+([a-z]{2,3}';
              '|info|arpa|aero|coop|name|museum)$/ix';

              ich find nirgends ne Anleitung dazu wo das erklärt steht,
              wäre super wenn ihr nen link parat hättet, oder mir es
              erklären könntet, danke.

              mfg darki
              Zuletzt geändert von darki777; 20.09.2006, 17:10.

              Kommentar


              • #8
                viel spucke, geduld, zeit und spaß

                http://de.php.net/manual/de/referenc...ern.syntax.php
                **********
                arkos
                **********

                Kommentar


                • #9
                  Also nur für das @ musst du nicht mit preg_match um dich schiessen (so Kanonenmässig) .. Da reicht auch die kleinere Variante wie z.B

                  PHP-Code:
                  if (strpos($_POST["mail"], "@") === false
                  Das suchpattern ist auch ein wenig überzogen, ich wollte dir nur preg_match näher bringen.

                  In Google findet man genug gängige Regex Patterns mit denen sich Mails verifizieren lassen und hier auf php-resource.de gibts auch nen Tutorial für die Teile.. (Solltest du dir mal zu gemüte führen da es vieles erleichtert)
                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar


                  • #10
                    aber er wollte doch gerne ne anleitung dazu. ich finds gut, wenn jemand die snippets die er benutzt auch gerne verstehen möchte.
                    **********
                    arkos
                    **********

                    Kommentar


                    • #11
                      Ich merks, habs mal schnell überflogen, is ziemlich viel zum Lesen ^^
                      Kommt mir ein bisschen nach Linux & grep allerdings is das dort auch
                      noch etwas einfacher ^^

                      Wollte eigentlich vorerst nur den Verknüpfungsoperator mehrerer
                      suchmuster, damit ich den Punkt . mit als Suchmuster hinzufügen kann,
                      allerdings hab ich da 2 Probleme, erstmal das Verknüpfen von @ und .
                      und dann dass, das . als unknown modifier erkannt wird, od. so in der
                      Art, das würde mir vorerst mal genügen, wenn ich das lösen könnte

                      mfg darki

                      Kommentar


                      • #12
                        wenn du ein script veränderst und es einen fehler auswirft, wäre es hilfreich, das veränderte script zu sehen

                        scheinbar haste das @ dort, wo er einen modifier erwartet... kenn das pattern-schema allerdings auch nicht auswendig und muss auch immer wieder aufs neue mühsam lesen... will einfach nicht in meinen schädel die nummer
                        **********
                        arkos
                        **********

                        Kommentar


                        • #13
                          als unknown modifier erkannt wird, od. so in der
                          Art, das würde mir vorerst mal genügen, wenn ich das lösen könnte
                          Das kommt daher dass das .-Zeichen innerhalb eines RegExp als Zeichen für alles steht. Wenn du es als Punktzeichen suchen willst, dann musst du es escapen: \.

                          Gruss

                          tobi
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            Original geschrieben von arkos
                            aber er wollte doch gerne ne anleitung dazu. ich finds gut, wenn jemand die snippets die er benutzt auch gerne verstehen möchte.
                            Darum sagte ich Tutorial auf php-resource.de
                            gruss Chris

                            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                            Kommentar


                            • #15
                              Original geschrieben von jahlives
                              Das kommt daher dass das .-Zeichen innerhalb eines RegExp als Zeichen für alles steht. Wenn du es als Punktzeichen suchen willst, dann musst du es escapen: \.

                              Gruss

                              tobi
                              Ich sehe einen Strichpunkt; dort wo ein Verknüpfungsoperator Punkt . stehen könnte. Die eigentlichen Punkte in der preg-exp sind korrekt escaped.

                              Kommentar

                              Lädt...
                              X