IP Sperre

Gilles

Grünschnabel
Hallo!
Kann mir jemand einen Code für eine IPSperre geben?
Wenns geht mit PHP und ohne MySQL.
Sorry das ich mit so ner dummen Frage anroll aber ich hab viel gesucht und nur weniges gefunden, und das was ich gefunden hat hat auhc nicht gefuntzt. Wäre euch dankbar wenn mir einer so nen Code durchreichen kann ;)
 
Selbst ist der Mann

Wieso schreibste es nicht selbst?
Wenn es ohne Mysql funktionieren soll dann kannste nur noch textfiles benutzen...

Du schreibst die Ip rein
und liesst sie irrgend wann wieder aus
wenn die Ip zu der des Rechners passt dann kannste damit ja verfahren wie du willst...

aber ok ich will mal nicht so sein! ;)
PHP:
/**
  * logging.php 
  * hier wird die ip gelockt
**/
<?
$handle = fopen("sperre.txt",ab);
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;
fwrite($handle,$ip);
fclose($handle);
?>

/* ---------------------- */

/**
  * index.php 
  * hier wird überprüft ob die ip im textfile steht
**/
<?
$data = file("sperre.txt");
$ip = $_SERVER["REMOTE_ADDR"];
$found=0;
for($i=0;$i<count($data);$i++)
	if(strnatcasecmp($data[$i],$ip))
		$found=1;

if($found == 1)
	echo "ip wurde gefunden";
?>
 
Zuletzt bearbeitet:
aber vorsicht damit!

Nicht das Du dann nach einer Zeit ganz viele IP's drinne hast!
also zu jeder Ip solltest Du vielleicht auch eine zeit schreiben!
denn eine ip sperre sollte auch zeitbegrenzt sein
 
@Gilles: Eine etwas differenziertere Problembeschreibung wäre ganz hilfreich. Meine zwei Vorredner mussten nämlich interpretieren in Richtung Reload-Sperre auf IP Basis.
Im eigentlich Sinne wäre ein IP-Sperre nämlich nur
PHP:
if($_SERVER['REMOTE_ADDR'] == "xxx.xxx.xxx.xxx") {
  echo "gesperrt";
}
Also auch wenn deine Frage durch meine Vorredner schon beantwortet wurde, achte bitte in Zukunft auf eine bessere Problembeschreibung.
 
Hmm
ok hier noch eine mit Ablaufdatum ! :)
PHP:
<?
/**
  * logging.php 
  * hier wird die ip gelockt
**/
$handle = fopen("sperre.txt",ab);
$maxLiveTime = 5; // wie lange darf es sein (sekunden)
$ip = $_SERVER["REMOTE_ADDR"];
$timestamp = time() + $maxLiveTime;
fwrite($handle,"$ip $timestamp");
fclose($handle);
?>


<?
/**
  * index.php 
  * hier wird überprüft ob die ip im textfile steht
**/
$data = file("sperre.txt");
$ip = $_SERVER["REMOTE_ADDR"];
$timestamp = time();
$found=0;
for($i=0;$i<count($data);$i++)
	$ar = explode(" ",$data[$i]);
	if(strnatcasecmp($ar[0]." ",$ip))
		if($ar[1] > $timestamp)
			$found=1;

if($found == 1)
	echo "ip wurde gefunden session noch nicht abgelaufen";
?>

Aber wartet ab ich überlege mir grad noch effizentere Methode da diese ja nicht sonderlich performant ist!
 
Zuletzt bearbeitet:
Und da ist sie auch schon! :)

PHP:
<?
/**
  * logging.php 
  * hier wird die ip gelockt
**/
$handle = fopen("sperre.txt",ab);
$maxLiveTime = 10; // wie lange darf es sein (sekunden)
$ip = $_SERVER["REMOTE_ADDR"];
$timestamp = time() + $maxLiveTime;
fwrite($handle,"$ip,$timestamp\n");
fclose($handle);
?>


<?
/**
  * index.php 
  * hier wird überprüft ob die ip im textfile steht
**/
$data = file("sperre.txt");
$data = array_reverse($data);
$ip = $_SERVER["REMOTE_ADDR"];
$timestamp = time();
$found=0;
for($i=0;$i<count($data);$i++){
	$ar = explode(",",$data[$i]);
	if(strcmp($ip,$ar[0]." ")) { // ka wieso ab das space muss da drann ^^...
		if(trim($ar[1]) > $timestamp) {
			$found=1;
			break;
		}
	}
}
if($found == 1)
	echo "ip wurde gefunden session noch nicht abgelaufen";
?>
 
Zurück