Web-Verzeichnis mit Passwort schützen

Nicht alle Hoster bieten direkt eine Möglichkeit an einen Web-Ordner mit einer Zugriffskontrolle zu versehen.

Mit diesem PHP-Script geht das recht einfach. Die Datei in den zu schützenden Ordner kopieren unn über die URL aufrufen.
z.B. https://meine_server.de/gesperrt/htaccess.php

Funktionsweise:
passwortschutzEs wird ein Formular angezeigt in dem der Benutzername und Passwort eingegeben werden muss. Durch absenden des Formulars wird die .htaccess und .htpassword erstellt. Danach ist der Ordner zugriffsgeschützt.

Um den Schutz wieder zu entfernen einfach die .htaccess löschen

 Inhalt der htaccess.php

<!DOCTYPE html><html lang="de"><head><meta charset="utf-8" /><title>Passwortschutz anlegen</title><body>
<?php
$p = dirname($_SERVER["SCRIPT_FILENAME"]);
if (isset($_POST['name']) && $_POST['name'] <> '' ) {  
  $x = $_POST['name'] . ':' . password_hash($_POST['pw'], PASSWORD_BCRYPT);
  if ($_POST['add']) {
    file_put_contents($p . '/.htpassword', '\n' . $x, FILE_APPEND);
  } else {
    file_put_contents($p . '/.htpassword', $x);      
  }  
  $x = "AuthType Basic\nAuthName 'Bitte Name und Passwort eingeben'\nAuthUserFile $p/.htpassword\nRequire valid-user";
  file_put_contents($p . '/.htaccess', $x);  
  echo 'Login<br />Name: ' . htmlspecialchars($_POST['name']) . '<br />' . 'Passwort : ' . htmlspecialchars($_POST['pw']) . '<br />'; echo 'Passwortschutz aktiv' . '<br />'; if ($_POST['rename'] && file_exists($_SERVER["SCRIPT_FILENAME"])) { rename($_SERVER["SCRIPT_FILENAME"], $_SERVER["SCRIPT_FILENAME"]. '_'); echo 'Script-Datei wurde umbenannt: ' . $_SERVER["SCRIPT_NAME"]. '_'; } } else { ?> <form action="<?php echo $_SERVER['SCRIPT_NAME'];?>" method="post"> <table><tbody> <tr><td colspan="3"><b>Passwortschutz anlegen</b></td></tr> <tr><td>Name:</td><td>&nbsp;</td><td><input type="text" name="name" /></td></tr> <tr><td>Passwort : </td><td>&nbsp;</td><td><input type="text" name="pw" /></td></tr> <?php if (file_exists($p . '/.htpassword')) echo '<tr><td>Benutzer anhängen ?</td><td>&nbsp;</td><td><input type="checkbox" name="add"></td></tr>'; ?> <tr><td>Diese Datei nach erstellen des<br />Passwortschutzes umbenennen ?</td><td>&nbsp;</td><td><input type="checkbox" name="rename"></td></tr> </tbody></table> <p><input type="submit" value=".htaccess & .htpassword anlegen"/></p> </form> <?php } ?> </body></html>