PHP-Code in htaccess/03_step/schutz/login_generator.txt

<?php
/*
Dieses Script schreibt eine .htaccess- und eine dazugehörige .htpasswd-Datei.
Platziere es in dem Verzeichnis, dass du schützen möchtest, und rufe es auf.

8ung:
- schon bestehende Dateien werden überschrieben!
- aus Sicherheitsgründen solltest du dieses File nach dem Einsatz löschen,
  es enthält die unverschlüsselten Passwörter!
*/

// Array: Benutzername => Passwort
$user = ['peter' => '1234', 'maria' => '4321', 'gustav' => '9876'];

// Art der Authentifizierung ('Basic' oder 'Digest')
$authType = 'Basic';

// Text im Login-Fenster
$loginText = 'Anmeldung Administrationsbereich';
// Hinweis: Die wenigsten Browser werden diesen Dialog anzeigen!

// Code für .htaccess-File aufbauen und File schreiben
function write_htaccess_File($authType, $loginText, $user) {
	
	// Pfad für das .pwpasswd-File bestimmen
	// Falls es in einem anderen Verzeichnis zu liegen kommt, muss hier angepasst werden
	$path_for_htpasswd_file = dirname(__FILE__);

	// Code aufbauen
	$code = 'AuthType ' .$authType. "\n";
	$code .= 'AuthName "' . $loginText . '"' . "\n";
	$code .= 'AuthUserFile ' . $path_for_htpasswd_file . '/.htpasswd' . "\n";
	$code .= 'require user ';
	$userNames = array_keys($user);
	foreach ($userNames as $out) {
		$code .= $out.' ';
	}
	$code . "\n";
	
	// .htaccess-File schreiben
	$handle = fopen(".htaccess","w");
	fwrite($handle,$code);
	fclose($handle);
	echo "Habe das .htaccess-File geschrieben<br>";
}

// Code für .htpasswd-File aufbauen und File schreiben
function write_htpasswd_File($user) {

	// Code aufbauen
	$code = '';
	foreach($user as $key => $value) {
		// Hier keine MD5-Hashes mehr einsetzen!
		$code .= $key.':'.password_hash($value, PASSWORD_DEFAULT)."\n";
	}

	// .htpasswd-File schreiben
	$handle = fopen('.htpasswd',"w");
	fwrite($handle,$code);
	fclose($handle);
	echo "Habe das .htpasswd-File geschrieben";
}

// Funktionen aufrufen
write_htaccess_File($authType, $loginText, $user);
write_htpasswd_File($user);

// mit der nächsten Zeile lässt sich dieses Script wieder automatisch löschen
// unlink("login_generator.php");
?>