Antispamm mit der IP

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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?
    Last edited by archie; 24-09-2002, 09:27.

  • #2
    Moin,

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

    Comment


    • #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.

      Comment


      • #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

        Comment


        • #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

          Comment


          • #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???

            Comment


            • #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

              Comment


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

                Comment


                • #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

                  Comment


                  • #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!

                    Comment


                    • #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?

                      Comment


                      • #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 ...
                        Last edited by BlobBanana; 25-09-2002, 23:20.

                        Comment

                        Working...
                        X