ggp Skrevet 17. desember 2004 Del Skrevet 17. desember 2004 (endret) Denne kommandoen banner en spesiell ip: <?php $ip = "xx.xxx.xx.xx"; $banmelding = "Du er bannet fra denne siden ."; if (($_SERVER['REMOTE_ADDR'] == $ip)) { echo "<p>$banmelding</p>"; exit(); } ?> Hvordan banner jeg flere fra en .txt fil ? Noe slikt ?: <?php $ip = "banned.txt"; $banmelding = "Du er bannet fra denne siden ."; if (($_SERVER['REMOTE_ADDR'] == $ip)) { echo "<p>$banmelding</p>"; exit(); } ?> Endret 17. desember 2004 av ggp Lenke til kommentar
LoS Skrevet 17. desember 2004 Del Skrevet 17. desember 2004 (endret) Tror kanskje at dette muligens funker. <?php $iparray = file('ip.txt'); if(in_array($_SERVER['REMOTE_ADDR']."\n", $iparray)) { die("Du er bannet fra siden"); } ?> edit: bomma litt noen steder edit2: ok torbjørn, skumleste bare gjennom manualen. Sånn, tro om det funker. Endret 17. desember 2004 av LoS Lenke til kommentar
Torbjørn Skrevet 17. desember 2004 Del Skrevet 17. desember 2004 du kan få gjøre en endring til i koden din: manualen til file sier dette: "[...] a line in the file, with the newline still attached." du må strippe alle newlines fra ip'ene i arrayet. Lenke til kommentar
LoS Skrevet 17. desember 2004 Del Skrevet 17. desember 2004 Jau, da har jeg lagt inn det. Gjorde det litt annerledes og bare la til newline på ipen jeg Lenke til kommentar
Torbjørn Skrevet 17. desember 2004 Del Skrevet 17. desember 2004 ingen dum løsning det nei, kunne evt. brukt: $iparray = array_map( "trim", file('ip.txt') ); Lenke til kommentar
ggp Skrevet 17. desember 2004 Forfatter Del Skrevet 17. desember 2004 (endret) Hva skal det stå i ip.txt filen da ? xx.xx.xx.xx , xx.xx.xx.xx , osv ? Endret 17. desember 2004 av ggp Lenke til kommentar
LoS Skrevet 17. desember 2004 Del Skrevet 17. desember 2004 xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx osv, separeres med ny linje Lenke til kommentar
ggp Skrevet 17. desember 2004 Forfatter Del Skrevet 17. desember 2004 (endret) Hmm Den koden virket ikke, er du sikker på den er 100% correct ? <?php $iparray = file('banned.txt'); if(in_array($_SERVER['REMOTE_ADDR']."\n", $iparray)) { die("Du er bannet fra siden"); } ?> Endret 17. desember 2004 av ggp Lenke til kommentar
Torbjørn Skrevet 17. desember 2004 Del Skrevet 17. desember 2004 sikker på at du har lagt inn riktig ip i fila? øverst kan du jo ha: echo "hei, din ip er: $_SERVER[REMOTE_ADDR]<br/>\n"; så blir det lettere å debuge. den ip'en må du legge i fila om du skal teste med deg selv. Lenke til kommentar
dabear Skrevet 17. desember 2004 Del Skrevet 17. desember 2004 Grunnen til at det ikke virka ggp, er at du gikk inn fra http://localhost/filnavnet ? Da vil nemlig ipen din være '127.0.0.1' <?php $iparray = file('banned.txt'); print_r($iparray); echo 'Din nåværende ip: ' . $_SERVER['REMOTE_ADDR']; if(in_array($_SERVER['REMOTE_ADDR'], $iparray)) { echo ' <p>Du er banna fra sida</p> '; } else { echo ' <p>Du har tillatelse til å se sida!</p> '; } ?> Lenke til kommentar
ggp Skrevet 17. desember 2004 Forfatter Del Skrevet 17. desember 2004 Jeg fikk fikset problemet, det var bare scripte som ikke virket skikkelig ... Har et nytt problem, jeg har en fwrite() som skriver til banned.txt ved å skrive ip'en til personen som skal bli bannet... Men personen blir ikke bannet fordi når scriptet mitt skrivert til banned.txt kommer det et mellomrom etter ip addressen, og dette gjør at personen IKKE blir bannet... Her er banne scriptet: <?php $iparray = file('banned.txt'); if(in_array($_SERVER['REMOTE_ADDR)'], $iparray)) { die("You have been banned from the forum ..."); } ?> Her er upload scriptet som skriver til banned.txt: <?php $ip = $_POST['ip']; $filename = "../../../../../banned.txt"; $somecontent = "$ip"; if (is_writable($filename)) { if (!$handle = fopen($filename, 'a')) { echo "Cannot open file ($filename)"; exit; } if (fwrite($handle, "$somecontent \n") === FALSE) { echo "Cannot write to file ($filename)"; exit; } echo ''; fclose($handle); } else { echo "The file $filename is not writable"; } ?> Hva er galt/ hvordan kan jeg fikse det ? Lenke til kommentar
dabear Skrevet 18. desember 2004 Del Skrevet 18. desember 2004 (endret) if (fwrite($handle, "$somecontent \n") === FALSE) { Ser du nøye på dette, ser du at det er et mellomrom etter $somecontent, før linjeskift kommer ("\n"). if (fwrite($handle, $somecontent . "\n") === FALSE) { Btw: Variabler trengs ikke quotes Og foresten, hva er vitsen med å sjekke om ei fil er skrivbar to ganger? if (is_writable($filename)) // OG if(fwrite($handle, $somecontent . "\n") === FALSE) Endret 18. desember 2004 av dabear Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå