Antispamm mit der IP

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

  • Antispamm mit der IP

    Ich versuche meinen Umfragescript mit einem IP-Log zu schützen, die IP wird auch geschrieben, aber man kann trotzdem 100 mal abstimmen. Kann mir bitte jemand helfen???


    PHP-Code:
    <?
    include("umfrageconfig.inc.php");
    $ip = $REMOTE_ADDR;
    $datum = date("j.M.Y");
    $ipdatei = fopen("umfrageips.txt", "r+");
    $check = explode("|", $ipdatei);
    fclose($ipdatei);
    if($ip != $check[0]  and  $datum != $check[1]) 
    {
    $file = "umfrage.txt";
    $a = file($file);
    $i = 1; $fi = Count($a);
    $n = 0;
    while ($i <= $fi):
    $a[$i] = trim(str_replace ("\n","", $a[$i]));
    $n = $n+$a[$i];
    $i++;
    endwhile;
    if ($answer!= "") echo "Danke für Ihre Stimme"; 
    $a[$answer]++; $n++; 
    $rez = "Ergebnise der Abstimmung\n".$a[1].
    "\n".$a[2]."\n".$a[3]."\n";
    $fp = @fopen($file,"w"); 
    if ($fp) { $counter=fputs($fp,$rez); fclose($fp); } 
    echo "<br>$antwort1 : <b>".$a[1]."</b>";
    echo "<br>$antwort2 : <b>".$a[2]."</b>";
    echo "<br>$antwort3 : <b>".$a[3]."</b>";
    echo "<br>Stimmen gesammt: ".$n;
    }
    else { echo"Sie haben bereits abgestimmt";
    exit;
    }
    if($vote == "$abstimmen") {
    $savedata = fopen("umfrageips.txt", "w");
    @fputs($savedata, "$ip|$datum");
    }
    @fclose($savedata);
    ?>
    Funkrioniert da:
    if($ip != $check[0] and $datum != $check[1])
    nicht oder ist da wa anderes?
    Zuletzt geändert von archie; 24.09.2002, 10:27.

  • #2
    Moin,

    versuch mal die vars vor dem Vergleich mit trim(); zu behandeln,
    damit hatte ich bei explode schon öfters Probs.
    Gruß
    Thomas

    Kommentar


    • #3
      hmm da habe ich keine Ahnung wie das gehen soll.
      da ich mit trim() nohc nie was gemacht habe und in meinem Buch das auch mal so sehr "verständlich" drin steht.

      Kommentar


      • #4
        und da sind ja eigentlich keine Leerzeichen vorhanden :?

        http://www.cs-expert.de/test/umfrageips.txt

        -----------------------------------------------------------
        Testvoing: http://www.cs-expert.de/test/umfrage.php

        Kommentar


        • #5
          $var = trim($var);
          Infos zu functionen findest Du oben bei PHP Handbuch [ ] suchen
          oder hier http://www.php.net/manual/de/function.trim.php

          wie gesagt ich Erinnere mich an Probs. allerdings waren da auch Zeilenumbrüche im Spiel, versuchs mal
          Gruß
          Thomas

          Kommentar


          • #6
            hat auch nicht geholfen.
            Ich will ja net so komplizierte IP Sperre erstellen, da soll nur eine IP gespeichert werden, um die Spamms zu vermeiden ;(
            Kann mir da keiner helfen???

            Kommentar


            • #7
              hmm,

              schau mal ob dein $REMOTE_ADDR 'gefüllt' ist, register globals = ?!

              teste mal
              if(($ip != $check[0])&&($datum != $check[1]))
              ...also mit zusätzlichen Klammern.
              Gruß
              Thomas

              Kommentar


              • #8
                hmm geht auch nicht ;( *heul*

                Kommentar


                • #9
                  ...fehlersuche,
                  was kommt da raus...
                  Code:
                  include("umfrageconfig.inc.php");
                  $ip = $REMOTE_ADDR;
                  echo "ip-----$ip--------<br>";
                  $datum = date("j.M.Y");
                  echo "datum-----$datum--------<br>";
                  $ipdatei = fopen("umfrageips.txt", "r+");
                  $check = explode("|", $ipdatei);
                  fclose($ipdatei);
                  echo "check[0]-----$check[0]--------<br>";
                  echo "check[1]-----$check[1]--------<br>";
                  if($ip != $check[0]  and  $datum != $check[1]) 
                  {
                  Gruß
                  Thomas

                  Kommentar


                  • #10
                    mach das ganze doch mit cookies, machst einfach n cookie mit der ip drin, falls das cookie vorhanden ist, darf der typ net nochma voten, falls doch, doch!

                    Kommentar


                    • #11
                      Das alleine ist zu unzuverlässig - das Setzen von Cookies kann man schliesslich abschalten.

                      Erstmal, wie Thomas schon sagte, ist Fehlersuche angesagt: Sind die Variablen gefüllt?

                      Kommentar


                      • #12
                        Du oeffnest die Datei und behandelst den Datei-handler als Array. Das kann so nicht funktionieren. Mit file() bekommst du den Inhalt einer Datei als Array, allerdings stehen die indizies fuer die Zeilen und nicht fuer die "Spalten" der Datei.

                        So sollte es gehen:

                        PHP-Code:
                        ...
                        $ipdatei file("umfrageips.txt");
                        $already_voted false;
                        for (
                        $i=0$i<count($ipdatei); $i++) {
                            
                        $check explode("|"$ipdatei[$i]);
                            if (
                        $check[0] == $ip) {
                                echo 
                        "Sie haben schon abgestimmt!!!";
                                
                        $already_voted true;
                            }
                        }


                        if(!
                        $already_voted ) {
                        ... 
                        das mit dem Datum hab ich jetzt rausgenommen ...
                        Zuletzt geändert von BlobBanana; 26.09.2002, 00:20.

                        Kommentar

                        Lädt...
                        X