Witam. Mam niecodzienny problem, mianowicie zrobilem banalny skrypt logowania i panel administracyjny strony - problem polega na tym że gdy nic nie grzebałem prze haśle było OK, jednak stwierdziłem że wypadało by je zaszyfrować poprzez MD5. Po zaszyfrowaniu skrypt nie radzi sobie z poprawnym odczytaniem danych z pliku admina.
Plik z kontem admina wygląda tak:
hasło|admin level|nick
I nazwa to nick.admin
Wygląda to tak:
//log.php - tu dochodzą dane z formularza
<?
session_start();
include('ip.php');
if(isset($_POST['zaloguj']))
{
$nazwakonta=$_POST['user'];
$haselko=$_POST['pass'];
$plik = "konta/$nazwakonta.adm";
$test = file_exists($plik);
if (!$test)
{
$ipadmina=$_SERVER['REMOTE_ADDR'];
$today1 = date("Y-m-d h:m");
$tekst1 = "$user ($ipadmina) nie zalogowal sie do panelu ($today)<BR>";
$file1 = "logowanieerror.log";
$fp1 = fopen($file1, "a");
flock($fp1, 2);
fwrite($fp1, $tekst1);
flock($fp1, 3);
fclose($fp1);
header('Location: ../error.php?e=10');
}
else
{
$plik = fopen("konta/$nazwakonta.adm", "r");
if ($plik === false) {
$ipadmina=$_SERVER['REMOTE_ADDR'];
$today2 = date("Y-m-d h:m");
$tekst2 = "$user ($ipadmina) nie zalogowal sie do panelu ($today)<BR>";
$file2 = "logowanieerror.log";
$fp2 = fopen($file2, "a");
flock($fp2, 2);
fwrite($fp2, $tekst2);
flock($fp2, 3);
fclose($fp2);
header('Location: ../error.php?e=10');// Wyświetla "Error" kiedy nie odnajdzie pliku
} else {
while (!feof($plik)) {
$bufor = fgets($plik);
}
fclose($plik);
}
$admininfo = explode("|",$bufor);
$pass = $admininfo[0];
$adminlevel = $admininfo[1];
$user = $admininfo[2];
$passmd5 = md5($haselko);
if($nazwakonta == $user && $passmd5 == $pass )
{
$_SESSION['login'] = $user ;
$ipadmina=$_SERVER['REMOTE_ADDR'];
$today3 = date("Y-m-d h:m");
$tekst3 = "$user ($ipadmina) zalogowal sie do panelu ($today)<BR>";
$file3 = "logowanie.log";
$fp3 = fopen($file3, "a");
flock($fp3, 2);
fwrite($fp3, $tekst3);
flock($fp3, 3);
fclose($fp3);
header("Location: admin.php");
}else{
header("Location: ../error.php?e=10");
$ipadmina=$_SERVER['REMOTE_ADDR'];
$today4= date("Y-m-d h:m");
$tekst4 = "$user ($ipadmina) nie zalogowal sie do panelu ($today)<BR>";
$file4 = "logowanieerror.log";
$fp4 = fopen($file4, "a");
flock($fp4, 2);
fwrite($fp4, $tekst4);
flock($fp4, 3);
fclose($fp4);
}
}
}
?>
//administrator.php - podczas logowania wyciąga dane z pliku o administratorze
<?
session_start();
$login = $_SESSION['login'];
$fp = fopen("konta/$login.admin", "r");
$info = fread($fp, 10);
$informacje = explode("|",$info);
$admlvl = $informacje[1];
if($admlvl==1){
$status = '<font color="green"><b>Moderator</font></b>';
}
if($admlvl==2){
$status = '<font color="orange"><b>Administrator</font></b>';
}
if($admlvl==3){
$status = '<font color="red"><b>Head Administrator</font></b>';
}
?>
//Tworzenie nowego użytkownika
$nick = $_POST['nick'];
$lvl = $_POST['lvl'];
$hass = $_POST['haslo'];
$haslo = md5($hass);
$tekst = "$haslo|$lvl|$nick";
$file = "kontaadministratorow/$nick.admin";
$f = fopen($file, "a");
flock($f, 2);
fwrite($f, $tekst);
flock($f, 3);
fclose($f);
echo"<b>Dodano administratora</b><br><br>
Login: <b>$nick</b><br>
Admin Level: <b>$lvl</b><br>
Haslo: <b>$hass</b><br>";
Ma ktoś jakieś pomysły ? Już naprawde nie mam pomysłów co jest nie tak.
A, i wyświetlam to w ten sposób:
<h2>Panel Administracyjny</h2>
<?
include('administrator.php');
echo'Zalogowany jako: <b> '.$login.'</b><br>Funkcja: '.$status.' (AdmLvl:'.$admlvl.')<Br><a href="logout.php"><b>Wyloguj</b></a><Br><br>';
Gdy działało poprawnie wyświetlało to tak:
Zalogowany jako: nastalski
Funkcja: Head Administrator (AdmLvl: 3)
Teraz wyświetla to tak
Zalogowany jako: nastalski
Funkcja: (AdmLvl:)