String filtern und Script beenden

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

  • String filtern und Script beenden

    Hallo zusammen,

    ich baue gerade in mein Gästebuch einen Spamschutz ein, dafür möchte ich gerne wissen wie ich ausfiltern kann ob "www" in dem String (§message) enthalten ist.

    Wenn www enthalten ist soll er das Script abbrechen wenn nicht soll er den GB-Eintrag in die TXT schreiben.

    Das hier ist mein bisheriger Versuch:

    PHP-Code:
    if ($message == www
    die(
    'SPAMSCHUTZ !!!');  
    else
        echo(
    ""); 
    Wenn ich nur "www" im Feld Nachricht ($message) eingebe funktioniert das aber wenn ich z.b: "www.test.de" schreibe geht der normal weiter und schreibt den Eintrag in die TXT.

    Kann mir da jemand sagen was ich anstatt == benutzen muss ?

    Vielen Dank schonmal, bin blutiger Anfänger in Sachen PHP.

  • #2
    Weil die Nachricht ja auch nicht mehr aus nur "www" besteht. Logisch, ne.

    Was su willst, ist den Inhalt auf ein vorkommen von "www" durchsuchen. Das geht mit http://de.php.net/manual/de/function.substr-count.php

    Den Sinn deines Vorhabens lass ich allerdings mal unkommentiert.

    Kommentar


    • #3
      z.B. mit strpos prüfen
      Zuletzt geändert von asp2php; 17.07.2006, 12:21.

      Kommentar


      • #4
        Um ganz einfach zu prüfen ob ein String in einem Anderen String vorhanden ist kannst du strpos() verwenden.

        Hier musst du nur darauf achten, das eine 0 (also gefunden an 0ter (erster) Stelle) in PHP als false interpretiert wird. Man prüft dann einfach ob strpos() wirklich "false" zurück gegeben hat.

        PHP-Code:
        if(strpos($message'www') === false){
          echo 
        "www gefunden";
        }else{
          echo 
        "kein www in der nachricht!";



        EDIT:
        evtl natürlich stripos() nehmen, wegen der case-insensitivity

        Kommentar


        • #5
          Vielen Dank, hier wird einem ja schnell geholfen.

          @Happy Nihilist: Würde mir gerne deine Meinung zu meinem Vorhaben anhören. Die Abfrage der www-adresse ist natürlich nicht der einzige Schutz gegen SPAM.

          Kommentar


          • #6
            ...Würde mir gerne deine Meinung zu meinem Vorhaben anhören
            Captchas sind vllt nicht gaaaaanz userfreundlich, aber durch einfache SpamMethoden ziemlich sicher nicht zu umgehen.

            Gruss

            tobi

            p.s. ein guter Link http://www.php-resource.de/forum/sho...ng+unterbinden
            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


            • #7
              Das mit strpos hat super funktioniert, jetzt habe ich das mit stripos versucht aber dann gibt er mir ne Fehlermeldung aus.

              Code:

              PHP-Code:
              if(stripos($message'www') === false){
                echo 
              "alles o.k";
              }else{
                 die(
              'SPAMSCHUTZ !!!'); 

              Fehlermeldung:

              PHP-Code:
              Fatal errorCall to undefined function: stripos() in /mnt/am2/03/021/00000005/htdocs/gbuch/sign_safe.php on line 44 

              Kommentar


              • #8
                Hey jahlives,

                das mit CAPTCHA ist sicher auch ne gute Methode, jedoch weiss ich nicht so ganz wie ich das in mein vorhandenes Script eingebaut bekomme.

                Ich bin hingegangen und habe aus dem Formular für den Eintrag ein versteckte Variable (Sicherheitsnummer) zum Script übergeben.
                Im Script habe ich dann abgefragt ob die Sicherheitsnummer o.k ist wenn nicht wurde das Script abgebrochen.

                Das hat auch ein paar Wochen geholfen aber jetzt habe ich wieder SPAM im GB gehabt...

                //edit: sorry wegen Doppelpost

                Kommentar


                • #9
                  Original geschrieben von chrisnrw86
                  Das mit strpos hat super funktioniert, jetzt habe ich das mit stripos versucht aber dann gibt er mir ne Fehlermeldung aus.

                  Code:

                  PHP-Code:
                  if(stripos($message'www') === false){
                    echo 
                  "alles o.k";
                  }else{
                     die(
                  'SPAMSCHUTZ !!!'); 

                  Fehlermeldung:

                  PHP-Code:
                  Fatal errorCall to undefined function: stripos() in /mnt/am2/03/021/00000005/htdocs/gbuch/sign_safe.php on line 44 
                  Ein Blick ins Online-Manual: http://de.php.net/manual/de/function.stripos.php#68010

                  Kommentar


                  • #10
                    stripos() gibt es erst ab php-version 5.

                    alternativ kannst du dann den string mit strtolower() in kleinbuchstaben wandeln und dann auf 'www' vergleichen

                    Kommentar


                    • #11
                      Original geschrieben von Happy Nihilist
                      Ein Blick ins Online-Manual: http://de.php.net/manual/de/function.stripos.php#68010
                      Das habe ich natürlich zuerst gemacht, aber irgendwie werde ich da nicht schlau draus. Ich dachte man muss einfach nur das strpos mir stripos austauschen.

                      Kommentar


                      • #12
                        Danke 3DMax, hast recht, ich habe hier PHP 4 laufen.

                        Sagt mal kann ich den Server eigentlich selber auf PHP5 updaten oder muss das der Provider machen ? Habe so ein Webpaket bei Strato.

                        Kommentar


                        • #13
                          Schau dir doch mal den Link genau an, den ich dir gepostet habe. stripos gibt es offensichtlich erst seit PHP5. Da die PHP-Version auf deinem Server stripos nicht kennt, hast du wohl irgendeine Version unter 5.

                          Damit du stripos trotzdem benutzen kannst, musst du den kleinen Codeschnipsel den Michiel in den Kommentaren gepostet hat, mit in dein Script einbauen.

                          Kommentar


                          • #14
                            @Happy Nihilist: Danke, da hatte ich nicht drauf geachtet als ich auf php.net war. Ich denke den Rest werde ich wohl selber hinbekommen.

                            Kommentar


                            • #15
                              Ich bin hingegangen und habe aus dem Formular für den Eintrag ein versteckte Variable (Sicherheitsnummer) zum Script übergeben.
                              Ne versteckte Nummer wird ein einigermassen kluger Spambot ausfindig machen und übetragen.
                              Der grosse Vorteil an Captchas ist, dass du den Code nicht zum User überträgst. Zumindest nicht als Zeichen sondern nur als Bestandteil des Bildes.
                              Die einzige Möglichkeit diesen Schutz zu umgehen, wäre es eine OCR SW zu verwenden die den Code ausliest und dem Spambot mitgibt, damit er sein Unwesen treiben kann. Wenn du aber in das Captcha Bild einige Störzeichen einbaust und ausserdem relativ wenig Kontrast verwendest, machst du es den Spammer beinahe unmöglich dein GB weiter vollzumüllen.

                              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

                              Lädt...
                              X