Lid |
|
Zoals je in dit topic hebt kunnen lezen, ben ik bezig met een blacklistsysteem. Het invoeren van de IP adressen is gelukt, met hulp van Giant en RdR. Nu is het probleem het eigenlijk verbannen van de IP adressen. Wat ik eerst probeerde, was dit:
<?php
require_once("connect.php");
$config_res_black_ip = mysql_query("SELECT * FROM list");
$config_row_black_ip = mysql_fetch_array($config_res_black_ip);
$config_black_ip = $config_row_black_ip['ip'];
// Checking of IP is on blacklist. If yes, redirect to ban.php
$visitor_ip = $_SERVER['REMOTE_ADDR'];
if( $visitor_ip == $config_black_ip) {
ob_end_clean();
header('Location: ban.php');
exit;
}
?>
<?php require_once("connect.php"); $config_res_black_ip = mysql_query("SELECT * FROM list"); $config_black_ip = $config_row_black_ip['ip']; // Checking of IP is on blacklist. If yes, redirect to ban.php $visitor_ip = $_SERVER['REMOTE_ADDR']; if( $visitor_ip == $config_black_ip) { } ?>
Misschien zie je dat er een regel mist, namelijk 'ob_start();'. Dit is omdat deze regel in andere pagina's die deze pagina includen wordt gebruikt.
Het probleem met de bovenstaande code is dat alleen het nieuwste resultaat wordt gebruikt. Dus als ik eerst 123 invoer, en daarna 321, dan heeft 123 toegang, en 321 niet. En als ik dan weer 213 invoer, heeft alleen 213 geen toegang, maar 123 en 321 wel, en... etc.
Hoe zorg ik ervoor dat de pagina controleert of het IP adres van de bezoeker gelijk is aan een willekeurig resultaat uit de database?
|