#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? + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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.... + Multi-Zitat Zitieren
#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 ); ?> + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#7 15. April 2007 Zuletzt von einem Moderator bearbeitet: 15. April 2017 AW: IP sperre Also tut mir leid, bei Google PHP IP Sperre eingegeben, erster Suchtreffer etc, FERTIG ... kein sinnloses Verbrauchen von Ressourcen. IP komplett zu sperren, kann auch andere User aussperren! IP in DB sperren schlägt also fehl, cookies sind das einzigst Wahre! In diesem Thread PHP: Nach dem klicken auf eine Grafik soll eine andere angezeigt werden ( schlecht erklärt ^^ - RR : Board [/ URL ], sind auch noch einige interessante dinge zu finden , wie z . B . Cookie -> Session -> IP - Knackpunkt . EDIT : Textdateien fürs IpLogging zu benutzen , ist nicht unbedingt sinnvoll . Bei einer kleinen Seite ist es noch okay , aber sobald mehr Hits da sind wird sowas doof ! Stichwort z . B . flock . Und wie man überprüft ob etwas , in einem anderen String drin steht , oder in einem Array ist doch pippifax . ( strstr , strpos , in_array ()) etc . einfach mal brain 1.0 einschalten .-> textdatei als string einlesen -> strpos !== false oder in_array ( IP , gesperrteIps ) -> die ( 'du hast schon gevotet.) .... + Multi-Zitat Zitieren
#8 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! + Multi-Zitat Zitieren
#9 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"... + Multi-Zitat Zitieren
#10 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. + Multi-Zitat Zitieren
#11 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 + Multi-Zitat Zitieren
#12 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). + Multi-Zitat Zitieren
#13 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 > 0 || $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" ; } ?> + Multi-Zitat Zitieren
#14 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... + Multi-Zitat Zitieren
#15 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 + Multi-Zitat Zitieren
#16 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 + Multi-Zitat Zitieren