Mam taki skrypt logowania:
<?
if($_GET['action'] == "login") {
$users = file("users.php"); // plik z userami if(!eregi("<?",$members)) // pomija pierwszą linię zabezpieczjącą baze { for($i = 0; $i < count($users); $i++) { list
($username, $password, $level) = explode("|", $users[$i]); // odczytuje dane i je rozdziela
if(isset($_POST['login']) && isset($_POST['pass'])) // sprawdza istnienie danych z FORM { if($_POST['login'] == $username && $_POST['pass'] == $password ) {
$_SESSION['username'] = "$username";
$_SESSION['password'] = "$password";
$_SESSION['level'] = "$level";
$_SESSION['data'] = date("G:i:s");
$ip = $_SERVER['REMOTE_ADDR'];
$date = date("d.m.Y, G:i:s"); $username_sess = $_SESSION['username'];
$log = fopen("d/database_lt.txt", "a"); fwrite ($log, "$username_sess|$date|$ip|n"); // dopisuje do logu poprawnych zalogowań
}
else {
$login_result = "<p><font color="red">Podano nieprawidłowy login/haslo.</font><br>Zapisano host i IP jako włamanie do systemu.";
$ip = $_SERVER['REMOTE_ADDR'];
$date = date("d.m.Y, G:i:s"); $username_sess = $_POST['login'];
$log = fopen("d/database_lf.txt", "a"); fwrite ($log, "$username_sess|$date|$ip|n"); // dopisuje do logu niepoprawnych zalogowań }
}
}
}
}
if($_GET['action'] == "logout") {
echo'<meta http-equiv="refresh" content="0; url=index.php">'; }
?>
I taki plik z danymi i hasłami:
<? die('Nie możesz podglądywać użytkowników i ich haseł!!'); ?> // Zabazpiecza plik z hasłami
root1|pass1|3|
root2|pass2|0|
root3|pass3|0|
root4|pass4|2|
Skrypt sprawdza login i hasło, jeżeli są poprawne to loguje i dopisuje do pliku poprawne zalogowanie. Jeżeli jednak nie zalogujemy się poprawnie, dopisuje login, IP i datę do pliku, gdzie przechowywane są dane niepoprawnych logowań.
I teraz jest duży problem.
Jak poprawnie się zaloguje na użytkownika to dopisuje go normalnie do logowań poprawnych, a do niepoprawnych aż 4 razy

, jak się zaloguje niepoprawnie to dopisuje tylko do zalogowań niepoprawnych też 4 razy

.
Jak to naprawić??
P.S. Wiem tylko że zależy to chyba od tego, że jest w pętli i wali linijka 6 (for($i = 0; $i < count($users); $i++)), ale jak w pętli jakiś element odpętlić??
Ten post edytował Athlan 18.12.2005, 17:25:46