21. april 2004 - 20:20Der er
39 kommentarer og 1 løsning
Ipbanning system
Hej jeg vil gerne have et system så jeg kan blocke nogle bestemte ip'er der fx genere mig i min tagwall eller lign. Jeg skal trække de ip'er der skal bannes ud af min mysql database
mysql_connect ("mydb1.surftown.dk","repsack_kasper","nokia2205"); mysql_select_db ("repsack_news"); $query = mysql_query("SELECT ipblock, nick, DATE_FORMAT(dato, '%d-%m-%Y') dato FROM ipblocking ORDER BY id"); while($r = mysql_fetch_assoc($query)) { $ipblock = $r["ip"]; $nick = $r["titel"]; $dato = $r["dato"]; echo "$ip $nick $dato"; }
Jeg har en ip blocker kode:
<? $ip = getenv('REMOTE_ADDR'); if (($ip == "127.0.0.1") || ($ip == "127.0.0.2")){ echo "<p><font color=#FF0000 face=Verdana size=2>Din adgang til denne side er blokeret</font></p>"; exit; }else{ echo "Du har adgang til siden"; } ?>
Hvordan får jeg dem "koblet" sammen? Så jeg banne alle de ip'er jeg vil :P
prøv at rette i denne line $res = mysql_query("SELECT nick, DATE_FORMAT(dato, '%d-%m-%Y') dato FROM ipblocking WHERE ipblock = '$ip'"); så du får: $sql = "SELECT nick, DATE_FORMAT(dato, '%d-%m-%Y') dato FROM ipblocking WHERE ipblock = '$ip'"; $res = mysql_query($sql) or die(mysql_error());
Hvis dette ikke giver et hint, så prøv at skrive $sql ud, før mysql_query(..) linjen. Og så evt se om det ser rigtigt ud.
if (!mysql_connect("$server","$bruger","$kodeord")) { udskriv_fejl("Kunne ikke oprette en forbindelse til MySQL."); } if(!mysql_select_db("$database")) { udskriv_fejl("Kunne ikke vælge databasen: $database"); } }
function query($query) { $resultat = mysql_query($query); if(!$resultat) { udskriv_fejl("Kunne ikke udføre: <em>$query</em>"); } }
function luk_mysql() { if(!mysql_close()) { udskriv_fejl("Kunne ikke lukke forbindelsen til MySQL!"); } }
function udskriv_fejl($fejl) { echo "<p>$fejl"; if ($mysql_fejl = mysql_error()) { echo "<br>Fejlen er: <em>$mysql_fejl</em>"; } exit; }
function ban_tjek() { # Variabler $admin_email = "MulBo@StorStodder.dk"; # Rediger denne linje til din email $remote_ip = $_SERVER['REMOTE_ADDR'];
aaben_mysql(); $sql = mysql_query("SELECT * FROM ban"); # While løkke while($data = mysql_fetch_array($sql)) { $ban_ip = $data['ip']; $grund = $data['grund']; if($ban_ip == $remote_ip) { print("<h2> Din ip er banned fra denne side...</h2>"); print("Du er banned fordi: $grund <br>"); print("Mener du at det er en fejl, du er banned?<br>"); print("Så skriv til mig: <a href='mailto:$admin_mail?subject=Jeg vil gerne unbannes.. min ip er: $remote_ip'>$admin_mail</a>"); // sæt // foran hvis du ikke bruger skriv_logfil($type, $grund); $type = "ban"; skriv_logfil($type,$grund);
hov inden jeg tager hele æren.... function aaben_mysql() { $server = "localhost"; $bruger = "*****"; $kodeord = "****"; $database = "******";
if (!mysql_connect("$server","$bruger","$kodeord")) { udskriv_fejl("Kunne ikke oprette en forbindelse til MySQL."); } if(!mysql_select_db("$database")) { udskriv_fejl("Kunne ikke vælge databasen: $database"); } }
function query($query) { $resultat = mysql_query($query); if(!$resultat) { udskriv_fejl("Kunne ikke udføre: <em>$query</em>"); } }
function luk_mysql() { if(!mysql_close()) { udskriv_fejl("Kunne ikke lukke forbindelsen til MySQL!"); } }
function udskriv_fejl($fejl) { echo "<p>$fejl"; if ($mysql_fejl = mysql_error()) { echo "<br>Fejlen er: <em>$mysql_fejl</em>"; } exit; }
er kodet af webcafe.dk fra deres tutorial... har bare ændret lidt på den ;)
Dennis...! Sidste ting og du får alle point :P Jeg vil godt have lavet det sådan at jeg fx kan vælge personen skal bannes i 2 uger. Det vil der så stå (kan jeg godt) men efter de 2 uger skal personen automatisk få adgang igen!!!
Det forstår jeg ikke. Det burde ellers være der. Jeg skal op på uni, så jeg er først tilbage om 2½ time, men du kan jo prøve at select'e udloebsdatoen og print'e den for at se hvad den er.
så jeg brugte den således: date_add( cur_date(), INTERVAL <grunden til at man blev bannet> DAY);
af en eller anden grund kan mysql ikke finde ud af at lægge 'asd' dage til dags dato :).. Det eneste jeg har gjort er et bytte om på udloebsdato og grund.
Du kan se her: INSERT INTO ipblocking (ipblock, nick, grund, udloebsdato) VALUES ('asd','sad',date_add(curdate(), INTERVAL 'asd' DAY),'1')
udloebsdato er '1', og der lægges 'asd' dage til dags dato.. Den vil den ikke være med til.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.