Ik ben met een klein projectje bezig, maar kom er even niet uit.
Het wordt een simpel logsysteem, waar je vanuit het admin panel de logs kunt bekijken. Hier worden ook IP-adressen bijgehouden, die je vanuit de logs meteen kunt blokkeren.
Op dit moment zit ik even in de knoei met het volgende:
In de logs kan een IP-adres meerdere keren voorkomen. Ik ga ervoor zorgen dat een IP-adres maar 1x per dag wordt gelogd om het overzichtelijk te houden. Maar met de volgende code wordt een IP-adres zo vaak geblokkeerd als deze in de logs voorkomt, en dat moet natuurlijk maar 1x zijn.
Ik heb zelf al heel wat afgezocht, maar kan het niet vinden.
<?php
session_start();
if($_SERVER['REQUEST_METHOD'] === 'POST'):
require_once('../../config.php');
$open = fopen("../../".$conf_file_logs, 'r');
while(!feof($open)): // <-- laadt alle rijen uit het logbestand (.txt)
$file = fgets($open);
$fileLine = explode('|', $file);
if($fileLine[1] == 'IP' && $fileLine[2] == $_POST['inputIp']): // <-- checkt het type log en kijkt of het IP-adres overeenkomt met de invoer van de beheerder, dit kan dus meerdere keren voorkomen
$array = array($_POST['inputIp'], $_POST['inputReason']);
newLine($array, "../../".$conf_file_ips);
header("Location: ../admin.php?IPCenter");
endif;
endwhile;
endif;
?>
Het probleem zit in de while en het feit dat de if-statement meerdere resultaten heeft/kan hebben. Uit de var_dump komt een opsomming van arrays naar voren.
In de logs wordt het als volgt opgeslagen:
logs.txt
0|IP|::1|12-04-2017
1|IP|::1|12-04-2017
ips.txt (geblokkeerde IP-adressen)
0|::1|Reden|12-04-2017
1|::1|Reden|12-04-2017