<?php
$html_header = <<<ID1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>Wysyłanie plików</title>
</head>
<body>
ID1;

$html_footer = <<<ID2
</body>
</html>
ID2;

$html_lista = <<<ID3
<div><ul>
<li><a href="http://localhost/download.php?name=plik1.zip">
Pierwszy plik</a></li>
<li><a href="http://localhost/download.php?name=plik2.zip">
Drugi plik</a></li>
<li><a href="http://localhost/download.php?name=plik3.zip">
Trzeci plik</a></li>
</ul></div>
ID3;

$html_nofile = <<<ID4
<p style="text-align:center">Nie ma takiego pliku na serwerze!</p>
<p style="text-align:center"> 
  <a href="http://localhost/download.html">Powrót do strony pobrań</a>
</p>
ID4;

$filesPath = "./downloads/";

/* funkcja sprawdzajaca poprawność nazwy */
function checkFileName($name)
{
  $pliki = array(
   "plik1.zip", "plik2.zip", "plik3.zip", 
   "plik4.zip", "plik5.zip"
  );
  return array_search($name, $pliki);
}

/* funkcja wysyłająca plik */
function send($fileName, $filePath)
{
  if(!file_exists($filePath.$fileName)){
    return false;
  }
  $fd = fopen($filePath.$fileName,"r");
  $size = filesize($filePath.$fileName);
  $contents = fread($fd, filesize($filePath.$fileName));

  fclose($fd);

  header("Content-Type: application/octet-stream");
  header("Content-Length: $size;");
  header("Content-Disposition: attachment; filename=$fileName");

  echo $contents;
  return true;
}

/* odczytanie danych i wywołanie funkcji */
if(isSet($_GET['name'])){
  if(checkFileName($_GET['name']) === false){
    echo $html_header;
    echo $html_nofile;
    echo $html_footer;
  }
  else{
    if (!send($_GET['name'], $filesPath)){
      echo $html_header;
      echo $html_nofile;
      echo $html_footer;
    }
  }
}
else{
  echo $html_header;
  echo $html_lista;
  echo $html_footer;
}

?>
