Werner-Zenk.de - Zur Startseite

PHP - Passwortschutz für den Download

Hiermit ist es möglich, Dateien (hier ZIP-Archive) mit einem individuellen Passwortschutz zu versehen. Es können beliebig viele Benutzer im Skript eingetragen werden, denen dann jeweils nur ein bestimmter Download zur Verfügung gestellt wird.


<?php

// Passwortschutz für den Download

// Namen, Passwörter und Download-Dateien eintragen
$namen = [
    
'Edwin Huber' => [
        
'passwort' => '123',
        
'download' => 'verzeichnis/datei1.zip'
    
],

    
'Paul Meier' => [
        
'passwort' => '1234',
        
'download' => 'verzeichnis/datei2.zip'
    
],

    
'Thomas Müller' => [
        
'passwort' => '12345',
        
'download' => 'verzeichnis/datei3.zip'
    
],
];

if (isset(
$_POST["name"])) {
 
// Name und Passwort überprüfen
 
if ($namen[$_POST["name"]]["passwort"] === $_POST["passwort"]) {

  
// Datei herunterladen
  
if (file_exists($namen[$_POST["name"]]["download"])) {
   
header("Content-Type: application/zip"); // application/zip
   
header("Content-Disposition: " . (!strpos($_SERVER["HTTP_USER_AGENT"], "MSIE 5.5") ? "attachment; " "") . "filename=" basename($namen[$_POST["name"]]["download"]));
   
header("Content-Length: " filesize($namen[$_POST["name"]]["download"]));
   
header("Content-Transfer-Encoding: binary");
   
header("Cache-Control: post-check=0, pre-check=0");
   
readfile($namen[$_POST["name"]]["download"]);
  }
 }
}
?>

<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title>Download</title>
 </head>
<body>

<form action="" method="post">
 <label>Name : <input type="text" name="name" required="required"></label> 
 <label>Passwort : <input type="password" name="passwort" required="required"></label> 
 <input type="submit" value="Download">
</form>

</body>
</html>

Tipp

Das Verzeichnis in dem die ZIP-Archive liegen, sollte mit einer .htaccess-Datei gesichert sein oder das Verzeichnis sollte außerhalb des "Document Roots" liegen.

Bausteine

Eine zufällige Auswahl von „Bausteinen” aus den Bereichen CSS, PHP, JavaScript und MySQL.

CSS - Link zum Seitenanfang setzen

PHP - Sommerzeit berechnen

JavaScript - Textteil auswählen

MySQL - Datensatz Wert um 10% veringern