Gå til innhold

Banne flere ip'r fra siden min


Anbefalte innlegg

Skrevet (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(); 
} 

?> 

 

:hmm:

Endret av ggp
Videoannonse
Annonse
Skrevet (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 :p

 

edit2: ok torbjørn, skumleste bare gjennom manualen. Sånn, tro om det funker.

Endret av LoS
Skrevet

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.

Skrevet (endret)

Hva skal det stå i ip.txt filen da ?

 

xx.xx.xx.xx , xx.xx.xx.xx , osv ?

Endret av ggp
Skrevet (endret)

Hmm :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 av ggp
Skrevet

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.

Skrevet

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> ';

}
?>

Skrevet

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 ?

Skrevet (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)

:ermm:

Endret av dabear

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...