[PHP] IP sperre

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Fireeye, 15. April 2007 .

Schlagworte:
  1. 15. April 2007
    IP sperre

    Hi,

    wie kann ich in einem Vote script eine ip sperre einbauen also, dass man mit der selben IP nur einmal voten darf
    oder währe das per coockie besser?
     
  2. 15. April 2007
    AW: IP sperre

    Würde es nicht per Cookie machen, da man den einfach nur löschen kann, und dann einfach neu Voten.


    greetz
     
  3. 15. April 2007
    AW: IP sperre

    Pack ne DB rein.... jede IP wird geloggt mit Zeit, wenn die Zeit wo er neu drücken will mehr als 24h her iss wird die Zeit aktualsiert und der Counter hoch gesetzt....
     
  4. 15. April 2007
    AW: IP sperre

    hab jetzt nur nen logger geschrieben aber wie kann ich noch dazu schreiben, dass die ip nur einmal voten darf???

    PHP:
    <? php
    $logfile 
    fopen ( "log.txt" "a" );
        
    fputs ( $logfile date ( "d-m-Y, H:i:s" time ()) .  ", "  .
    $_SERVER [ REMOTE_ADDR ] .   ", "  $_SERVER [ REQUEST_METHOD ] .  ", "  $_SERVER [ PHP_SELF ] .  ", "  .
    $_SERVER [ HTTP_USER_AGENT ] .  ", "  $_SERVER [ HTTP_REFERER ] .  "
    "
    );
    fclose ( $logfile );
    ?> 
     
  5. 15. April 2007
    AW: IP sperre

    du musst das mysql-feld ip auf unique setzten, dann kann jede ip nur einmal eingetragen werden.

    //edit, das geht natürlich nur mit mysq-db'sl!!

    mfg
     
  6. 15. April 2007
    AW: IP sperre

    gibt es keine andere möglichkeit, die die ips von der textdatei "log.txt" für eine bestimmte zeit sperrt?
     
  7. 15. April 2007
    AW: IP sperre

    Design Community - Design Nation

    da stehen auf der ersten seite auch 2-3 gute Tuts!

    Schaus dir mal an!
     
  8. 15. April 2007
    AW: IP sperre

    Also mit einer txt-Datei hab ich das noch nie erlebt...

    Datenbank-Struktur:

    CREATE TABLE `log` (
    `ID` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `IP` VARCHAR( 20 ) NOT NULL ,
    `Time` INT( 20 ) NOT NULL
    );


    So und in den Code machste einfach abfragen die abchecken wo er rein kommt...

    Beim Klick des links wird geguckt ob seine IP in der Tabelle steht. Wenn NICHT -> eintragen mit Zeit, und Vote-Count hoch.
    Wenn sie vorhanden ist guggn ob Zeit vor 24h oder früher das letzte mal aktuell war. Wenn JA (also eintrag länger als 24h her) dann ZEIT ändern und Vote-Count HOCH...
    Wenn die Zeit nicht länger als 24h her ist, dann machste Meldung "Du hast schon abgestimmt"...
     
  9. 15. April 2007
    AW: IP sperre

    Gn0m das ist doch Mist. Angenommen deine IP ändert sich um 15 Uhr, ich komme um 15 Uhr online und will vote und kann nicht weil ich deine IP bekommen habe .... no way, das ist Murks. Klar kann einem Anfänger sowas passieren, aber man sollte wenn man für das Internet programmiert, schon dran denken wie das Internet und der User funktioniert.

    NUR DIE IP IN DER DATENBANK ZU LOGGEN UND ZU KONTROLLIEREN IST MURKS.

    Ich kann mich nur wiederholen sowas läßt sich effektiv nur mit Cookies realisieren. Die IP ist kein eindeutiges Identifikationsmerkmal! Man muss sich damit abfinden dass sich mit PHP und allen legalen Möglichkeiten kein eindeutiges Identifikationsmerkmal erstellen läßt. Cookies sind die einzige Möglichkeit, wenn der User fair ist und auch nur einen Browser benutzt, ihn eindeutig zu identifizieren. Selbst wenn man soweit geht mit Java zu spielen und sogar auf den Trichter kommt mit JAVA die Mac-Adresse auszulesen, muss man leider davon ausgehen, dass der User auch diese ändern kann und die MAC ist im Internetzeitalter vom Prinzip her das einzig legale, unique, Identifikationsmerkmal.

    Wer auch ein bißchen "illegaler" werden will soll sich BHOs etc. anschauen, aber das übersteigt jeden Anfänger.
     
  10. 15. April 2007
    AW: IP sperre

    Maken.... Er versucht es mit TXT-Dateien... Ich dachte eig. nicht das das ein Voting werden soll wo es auf einen oder 2 klicks ankommt daher war mir der IP-Wechsel egal^^

    Es gibt sicherlich varianten so etwas zu umgehen... Jedoch würde das glaube ich das wissen eines Proggers weit übersteigen der eine SQL-Datenbank mit einer TXT-Datei ersetzen will
     
  11. 15. April 2007
    AW: IP sperre

    Jo Pubmarek hat zum Beispiel in seinen allgemeinen Informationen zu Firewalls, Malware etc. im H&S Bereich Dinge genannt die missbraucht werden können um eindeutige Merkmale zu schaffen, aber das macht n Anfänger und geübter Progger der sich recht gut mit PHP auskennt nichtmal eben.

    Jo im Endeffekt ist es bei einem kleinen Vote egal, aber meine Motivation wäre da, und das halte ich für den einzigst richtigen Weg, direkt ordentlich anzufangen, als nur halbgar zu bleiben!

    Das mit Textdateien ist doch auch pippi eigentlich.

    Textdatei öffnen ( PHP: fopen - Manual etc. )->locken ( PHP: flock - Manual )->kontrollieren ob die ip drin steht ( PHP: strpos - Manual etc)->falls nein reinschreiben ( PHP: fwrite - Manual etc)->falls doch script töten ( PHP: die - Manual etc).
     
  12. 15. April 2007
    AW: IP sperre

    hmmm also so kopli will ichs net machen... am besten fänd ichs halt ohne datenbank muss ja kein "anti hacker vote" sein... mein vote script funktioniert schließlich auch ohne datenbank deswegen dachte ich, dass die ip sperre auch ohne datenbank einfach realisierbar wäre...
    Aber wenn man sagt, dass es nicht möglich ist dann ok lass ich die sperre weg dann können die user halt öfters voten

    mein vote script is auch nicht das beste und basiert auf ein anderes votescript von nem freund

    PHP:
    <html lang="en"><center>
    <font face="Verdana">
      <head>
        <meta http-equiv="Pragma" content="no-cache">
        <meta http-equiv="Revisit-After" content="5 Days">
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title>Thank you for voteing</title>
      </head>
      <body background="bg.gif" bgcolor="#FFFFFF" text="#000000" link="#0000FF" alink="#0000FF" vlink="#0000FF">
       <h1>Results</h1></font></center>

        <!-- Put Your HTML Here -->
    <center>Your IP has been logged: <b><?php
        
        
    if( getenv ( "HTTP_CLIENT_IP" )) {
     
    $ip  getenv ( "HTTP_CLIENT_IP" );
     } elseif(
    getenv ( "HTTP_X_FORWARDED_FOR" )) {
     
    $ip  getenv ( "HTTP_X_FORWARDED_FOR" );
     } else {
     
    $ip  getenv ( "REMOTE_ADDR" );
     }
      echo 
    $ip ;
    ?></b> Please vote only once</center>

    <?php
    $logfile 
    fopen ( "log.txt" "a" );
        
    fputs ( $logfile date ( "d.m.Y, H:i:s" time ()) .  ", "  .
    $_SERVER [ REMOTE_ADDR ] .   ", "  .
    $_SERVER [ HTTP_USER_AGENT ] .  ", "  $_SERVER [ HTTP_REFERER ] .  "
    "
    );
    fclose ( $logfile );
    ?> 

    <?php
    $question 
    "Votes For Do You Like This Site" // change this to your question
    $questionoptionone  "<center>Yes</center>" // change this to the first option
    $questionoptiontwo  "<center>No</center>" // change this to the secound option
    if(isset( $_POST [ 'vote' ])){
         if (!empty(
    $_POST [ 'vote' ])){
              
    $vote  $_POST [ 'vote' ];
              if(
    $vote  ==  "yes" ) {
                   
    $votegd  "plus.txt" ;
                   
    $votebd  "neg.txt" ;
                   
    $abab  $questionoptionone ;
                   
    $baba  $questionoptiontwo ;
              } elseif(
    $vote  ==  "no" ) {
                   
    $votegd  "neg.txt" ;
                   
    $votebd  "plus.txt" ;
                   
    $abab  $questionoptiontwo ;
                   
    $baba  $questionoptionone ;
              } else {
                   echo 
    "<h3>Sorry there was an error.</h3>" ;
              }
              
    $fp  fopen ( $votegd , "r" ); 
              
    $numa  fgets ( $fp , 9999 ); 
              
    fclose ( $fp ); 
              
    $fp  fopen ( $votegd , "w" );
              
    $numa  +=  1
              
    fputs ( $fp $numa ); 
              
    fclose ( $fp ); 
              
    $fpb  fopen ( $votebd , "r" ); 
              
    $numb  fgets ( $fpb , 9999 ); 
              
    fclose ( $fpb ); 
              
    $fpb  fopen ( $votebd , "w" );
              
    fputs ( $fpb $numb ); 
              
    fclose ( $fpb );
              
    $a  $numa ;
              
    $b  $numb ;
              
    $num  $a  $b ;
              
    $numaa  round ( $a / $num  100 );
              
    $numbb  round ( $b / $num  100 );
              
    $anumaa  round ( $a / $num  300 );
              
    $anumbb  round ( $b / $num  300 );
              
    $numnum  $a  $b ;
    ?>
    <center>
    <font size="4" face="Verdana">
    <?php
    print  "" . $question . "" ;
    ?>
    </font></center><br><br>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="20%">
    <?php
              
    print  "" . $abab . "" ;
              print 
    "</td>\n" ;
              print 
    "<center><td width=\"80%\">\n" ;
              print 
    "<img src=\"bar.gif\" WIDTH=" . $anumaa . " HEIGHT=15> " . $numaa . "%<br>\n" ;
              print 
    "</td>\n" ;
              print 
    "</tr>\n" ;
              print 
    "<tr>\n" ;
              print 
    "<td width=\"20%\">\n" ;
              print 
    "" . $baba . "\n" ;
              print 
    "</td>\n" ;
              print 
    "<td width=\"80%\">\n" ;
              print 
    "<img src=\"bar.gif\" WIDTH=" . $anumbb . " HEIGHT=15> " . $numbb . "%<br>\n" ;
              print 
    "</td>\n" ;
              print 
    "</tr>\n" ;
              print 
    "</table><br>\n" ;
              print 
    "<center>Out Of " . $numnum . " People Who Voted</center>\n" ;
              print 
    "</center></font>\n" ;
         } elseif (empty(
    $_POST [ 'vote' ])){
              print 
    "<center><font size=\"4\" face=\"Verdana\">Sorry you need to check one of the boxes</font></center>\n" ;
         } else {
              print 
    "<center><font size=\"4\" face=\"Verdana\">Sorry there was an error</font></center>\n" ;
         }
    } else {
         
    $votegd  "plus.txt" ;
         
    $votebd  "neg.txt" ;
         
    $abab  $questionoptionone ;
         
    $baba  $questionoptiontwo ;
         
    $fp  fopen ( $votegd , "r" ); 
         
    $numa  fgets ( $fp , 9999 ); 
         
    fclose ( $fp );
         
    $fpb  fopen ( $votebd , "r" ); 
         
    $numb  fgets ( $fpb , 9999 ); 
         
    fclose ( $fpb ); 
         
    $a  $numa ;
         
    $b  $numb ;
         
    $num  $a  $b ;
         if(
    $a  ||  $b  0 ) {
              
    $numaa  round ( $a / $num  100 );
              
    $numbb  round ( $b / $num  100 );
              
    $anumaa  round ( $a / $num  300 );
              
    $anumbb  round ( $b / $num  300 );
         } else {
              
    $numaa  0 ;
              
    $numbb  0 ;
              
    $anumaa  0 ;
              
    $anumbb  0 ;
         }
         
    $numnum  $a  $b ;
    ?>
    <center>
    <font size="4" face="Verdana">
    <?php
    print  "" . $question . "" ;
    ?>
    </font></center><br><br>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="20%">
    <?php
         
    print  "" . $abab . "" ;
         print 
    "</td>\n" ;
         print 
    "<td width=\"80%\">\n" ;
         print 
    "<center><img src=\"bar.gif\" WIDTH=" . $anumaa . " HEIGHT=15> " . $numaa . "%<br></center>\n" ;
         print 
    "</td>\n" ;
         print 
    "</tr>\n" ;
         print 
    "<tr>\n" ;
         print 
    "<td width=\"20%\">\n" ;
         print 
    "" . $baba . "\n" ;
         print 
    "</td>\n" ;
         print 
    "<td width=\"80%\">\n" ;
         print 
    "<center><img src=\"bar.gif\" WIDTH=" . $anumbb . " HEIGHT=15> " . $numbb . "%<br></center>\n" ;
         print 
    "</td>\n" ;
         print 
    "</tr>\n" ;
         print 
    "</table><br>\n" ;
         print 
    "<center>Out Of " . $numnum . " People Who Voted</center>\n" ;
         print 
    "</font>\n" ;

    }
    ?>
     
  13. 29. April 2007
    AW: IP sperre

    @Gn0m, sry, auch mein Vorschlag mit Cookies etc. ist mittlerweile zu missachten. Jemand hat mich darauf aufmerksam gemacht, dass es natürlich auch möglich ist, das http protokoll komplett ohne Headerinformationen betreffend den Cookies etc. zu benutzen und einen Request pur abzuschicken ... die kombination von alledem wird sich wohl als Bestes herausstellen. Cookie/Session/IP-Datenbank etc...
     
  14. 2. Mai 2007
    AW: IP sperre

    Wenn ich es richtig sehe, speicherst du die IP's in einer *.txt, was du aber nicht machen solltest, da man vom Browser aus den Inhalt der *.txt auslesen kann. Benenne die Dateien einfach in *.php um, und der Browser gibt ne leere Seite aus.

    mfg
    Hägar

    EDIT: jo, hab da was verwechselt, aber ohne <?php ?> kommt es auch nicht zu nem parse error
     
  15. 2. Mai 2007
    AW: IP sperre

    falsch, wenn dann müsste er den inhalt dann als kommentar machen und die kalmmern (<?php /* */?>) vor dem bearbeiten löschen lassen, ansonsten parse error
     
  16. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.