eintrag verhindern

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

  • eintrag verhindern

    hallo,

    da unser gb zur zeit massive spamattacken ausgesetzt ist, habe ich mir folgendes überlegt:

    ess gibt eine badwordliste in diesem gb, wie in anderen auch. leider.... wie in anderen auch werden wörtre nur mit einem zeichen ersetzt wenn diese in der badwortliste stehen. nun habe ich mir überlegt, warum nur ersetzen und nicht den eintrag verbieten?

    das ganze klappt z.b. recht gut mit der namenkontrolle, welche sich auch in unserem gb befindet. ein benutzername der dort drin steht, kann zwar eintrage schreiben, aber wenn dieser gespeichert werden soll, wird das ganze unterbrochen.

    im folgenden sieht das so aus

    PHP-Code:
        /* Namenkontrolle */
        
    if($config['banname']) {
            
    $allnames explode("\r\n",$config['banname']);
            for (
    $i 0$i<count($allnames); $i++) {
                if(
    $allnames[$i] == $postername) {
                    
    rideSite($sess->url('index.php'), $lang['rec_error44']);
                    exit();                
                } 
    // end if
            
    // end for
        
    // end if 
    nun habe ich mir überlegt, das ganze auch für die wortzensur zu benutzen.

    meine bisherigen bemühungen:

    PHP-Code:
        /* Wortkontrolle */
        
    if($config['banword']) {
            
    $banword explode("\r\n",$config['banword']);
            for (
    $i 0$i<count($banword); $i++) {
                if(
    $banword[$i] == $guestext) {
                    
    rideSite($sess->url('index.php'), $lang['rec_error44']);
                    exit();                
                } 
    // end if
            
    // end for
        
    // end if 
    die tabelle banword habe ich erstellt, sie existiert also. leider jedoch hat diese vorgehensweise bisher zwei entscheidene nachteile ergeben:

    1.
    wenn der letzte eintrag in der tabelle banword mit ein return abgeschlossen wird, werden alle versuche einen eintrag ins gb zu schreiben blockiert egal ob das wort in der banword tabelle vorkommt oder nicht.

    2.
    wenn der letzte eintrag in der tabelle banword nicht mit einem return abgeschlossen wird, dann wird wieder alles eingetragen und der replace_censor greift.

    tja..... grosse ratlosigkeit bei mir, zumal mein wissen was php angeht nicht besonders gross ist. vielleicht hat jemand in diesem forum eine idee wie man das ganze bewerkstelligen könnte.

    gruss flinkesocke

  • #2
    PHP-Code:
    $badWords explode("\r\n",$config['banword']);
    foreach(
    $badWords as $wert) {
        if(
    strpos($wert,$guestext) !== false) {
          return 
    false;
        }

    Irgendwie in diese Richtung...

    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


    • #3
      Hallo Tobi,

      Original geschrieben von jahlives
      PHP-Code:
      $badWords explode("\r\n",$config['banword']);
      foreach(
      $badWords as $wert) {
          if(
      strpos($wert,$guestext) !== false) {
            return 
      false;
          }

      Irgendwie in diese Richtung...

      Gruss

      tobi
      danke für deine hilfe, aber leider bringt das nichts, da die nachricht unabhängig davon ob das wort in der banword tabelle steht oder nicht, ins gb eingetragen wird.

      gruss Flinkesocke

      Kommentar


      • #4
        danke für deine hilfe, aber leider bringt das nichts, da die nachricht unabhängig davon ob das wort in der banword tabelle steht oder nicht, ins gb eingetragen wird.
        Dann mach ne Fkt draus und prüfe deren Rückgabewert. Wenn dann trotzdem der Eintrag gemacht wird dann
        PHP-Code:
        $badWords explode("\r\n",$config['banword']);
        function 
        checkWords($str,$bad){
            foreach(
        $bad as $wert) {
                if(
        strpos($wert,$guestext) !== false) {
                  return 
        false;
                }
            }
            return 
        true;
        }
        if(
        checkWords($_POST['userEingabe'],$badWords) === false) {
            die(
        'diesen Eintrag mache ich nicht !!!');
        }else{
            
        //Eintrag in DB oder was auch immer vornehmen

        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


        • #5
          Original geschrieben von jahlives
          Dann mach ne Fkt draus und prüfe deren Rückgabewert. Wenn dann trotzdem der Eintrag gemacht wird dann
          PHP-Code:
          $badWords explode("\r\n",$config['banword']);
          function 
          checkWords($str,$bad){
              foreach(
          $bad as $wert) {
                  if(
          strpos($wert,$guestext) !== false) {
                    return 
          false;
                  }
              }
              return 
          true;
          }
          if(
          checkWords($_POST['userEingabe'],$badWords) === false) {
              die(
          'diesen Eintrag mache ich nicht !!!');
          }else{
              
          //Eintrag in DB oder was auch immer vornehmen

          Gruss

          tobi
          Hallo Tobi,

          tja...leider hat sich an dem ergebnis nicht geändert. ich danke dir aber trotzdem für deine mühe vielleicht hat ja noch jemand anderes aus diesem forum eine idee wie man das ganze umsetzen kann.

          danke und gruss Flinkesocke

          Kommentar


          • #6
            könntest du deinen quellcode bitte mal irgendwo als txt/phps raufladen?

            ich habe die befürchtung, dass du den sql-eintrag nach der abfrage machst => wird immer ausgeführt


            mfg TroX
            Freedom is a state of mind. Not a state in which we live.

            troxdev.ch | animefieber

            Kommentar


            • #7
              hallo Trox,
              Original geschrieben von TroX
              könntest du deinen quellcode bitte mal irgendwo als txt/phps raufladen?

              ich habe die befürchtung, dass du den sql-eintrag nach der abfrage machst => wird immer ausgeführt


              mfg TroX
              sorry wenn ich jetzt sau blöde frage, aber welchen quelltext meinst du ?

              das was ich oben gepostet haben ist alles was dazu in der php-datei steht. ich kann die aber auch gerne die gesamte newpost.php senden wenn du das meinst

              gruss flinkesocke

              Kommentar


              • #8
                Original geschrieben von flinkesocke


                das was ich oben gepostet haben ist alles was dazu in der php-datei steht. ich kann die aber auch gerne die gesamte newpost.php senden wenn du das meinst
                nicht hier posten, sondern irgendwo den gesamten code als txt/phps hochladen.
                Freedom is a state of mind. Not a state in which we live.

                troxdev.ch | animefieber

                Kommentar

                Lädt...
                X