<?php
/*Skrypt pochodzi z książki "PHP. 101 praktycznych skryptów"
  autor: Marcin Lis                    http://marcinlis.com*/

function readArray($fd)
{
  $arr = array();
  while (!feof ($fd)) {
    $line = trim(fgets($fd));
    if(($pos = strpos($line, ":"))===false) continue;

    $tempUser = substr($line, 0, $pos);
    $tempPass = substr($line, $pos + 1, strlen($line) - $pos);
    if ($tempUser == '' || $tempPass == '') continue;

    $arr[$tempUser] = $tempPass;
  }
  return $arr;
}

function writeArray($fd, $arr)
{
  foreach($arr as $key => $value){
    $tempStr = $key.":".$value."\r\n";
    fwrite($fd, $tempStr);
  }
}

if(isSet($_POST["haslo"])){
  $pass = $_POST["haslo"];
}
else{
  echo("Brak pola hasło.");
  exit();
}

if(isSet($_POST["user"])){
  $user = $_POST["user"];
}
else{
  echo("Brak pola użytkownik.");
  exit();
}

if(isSet($_POST["akcja"])){
  $akcja = $_POST["akcja"];
}
else{
  echo("Brak pola akcja.");
  exit();
}

if($pass == "" && $akcja != "remove"){
  echo("Brak hasła!");
  exit();
}
if($user == ""){
  echo("Brak nazwy użytkownika!");
  exit();
}

if(!$fd = @fopen("./passwords/passwords.txt", "a+")){
  echo("Błąd przy próbie otwarcia pliku");
  exit();
}

$arr = readArray($fd);
fclose($fd);

if($akcja == "add"){
  if(!array_key_exists($user, $arr)){
    $arr[$user] = sha1($pass);
    echo("Użytkownik: $user został dodany do bazy!");
  }
  else{
    echo("Użytkownik: $user istnieje już w bazie!");
    exit();
  }
}
else if ($akcja == "remove"){
  if(array_key_exists($user, $arr)){
    unset($arr[$user]);
    echo("Użytkownik: $user został usunięty z bazy!");
  }
  else{
    echo("Nie ma użytkownika: $user w bazie!");
    exit();
  }
}
else if ($akcja == "modify"){
  if(array_key_exists($user, $arr)){
    $arr[$user] = sha1($pass);
    echo("Hasło użytkownika: $user zostało zmienione!");
  }
  else{
    echo("Nie ma użytkownika: $user w bazie!");
    exit();
  }
}
else{
  echo("Błędne dane: akcja=$akcja");
  exit();
}

if(!$fd = @fopen("./passwords/passwords.txt", "w")){
  echo("Wstąpił błąd przy próbie zapisu zmodyfikowanej bazy!");
  exit();
}
writeArray($fd, $arr);
fclose($fd);
?>
