<?php
// Schickt den HTTP 401 Header an den Browser
function send_auth_header()
{
  header('WWW-Authenticate: Basic realm="File Upload"');
  header('HTTP/1.0 401 Unauthorized');
  include("zugriff_verweigert.php");
  exit;
} /* function send_auth_header() */


// Malt ein schoenes Upload Formular
function print_upload_form()
{
  ?>
  <form method="POST" enctype="multipart/form-data">
    <input type="file" name="datei" />
    <input type="submit" />
  </form>
  <?php
} /* function print_upload_form() */


/* Kuemmert sich um das Hochladen und
   Verarbeiten der Datei */
function handle_file_upload()
{
  if(!move_uploaded_file($_FILES['datei']['tmp_name'],
                        "./uploads/".$_FILES['datei']['name'])) {
    echo "Da ist was schief gelaufen";
  } else {
    echo "Alles erfolgreich hochgeladen. <br />";

    // Bei Klartext Dateien, koennen wir noch den Inhalt anzeigen
    if($_FILES['datei']['type'] == 'text/plain') {
      echo "Der Inhalt der Datei ist: <br />\n";
      echo "<pre>";
      echo file_get_contents("./uploads/".$_FILES['datei']['name']);
      echo "</pre>\n";
    }
  }
} /* function handle_file_upload() */

// Sind wir authentifiziert??
if (!isset($_SERVER['PHP_AUTH_USER'])) {
  send_auth_header(); // Nein
} else {
  // Ja, sind wir, nun auch die richtigen Zugangsdaten?
  if("jan" == $_SERVER['PHP_AUTH_USER'] &&
     "naj" == $_SERVER['PHP_AUTH_PW']) {

    // Haben wir auch, nun das Upload Formular
    print_upload_form();

    /* Wenn wir ein Formular zugeschickt
       bekommen, kuemmern wir uns drum */
    if(isset($_FILES['datei'])) {
      handle_file_upload();
    }
    /* Da ist jemand mit falschen
       Zugangsdaten, nochmal bitte. */
  } else {
    send_auth_header();
  }
}
?>