Zugang A: Konfiguration

Erstellt: 08.03.2022 Geändert: 13.11.2023 Lesedauer ≤ 1 Min.

In der aktuelle Ausprägung wird dieses Script nur für die Passwortpflege in den Skripten mod und resetpass verwendet.

Mit diesem Script werden Daten und Funktionen für (die genannten) Skripte der Zugangskontrolle bereitgestellt.

Es wird im Verzeichnis /user/ erwartet, in dem alle der Zugangskontrolle abgelegt werden.

Querverweis

Benutzerzugang einrichten

Das Skript

Stand: 21.10.2022°

Ladefehler: $$$ file a $$$

Die ausgegebenen Texte sollten an die jeweilige Situation angepasst werden

<?php
$thefile 
$_SERVER["DOCUMENT_ROOT"] . '/user/proof.txt';
$admin "EMAIL-ADRESSE des Admins";
$betreff  "Passwort für xxx";
$betreff "=?utf-8?b?".base64_encode($betreff)."?=";  // Encodierung für deutsche Umlaute erforderlich

$msg 'Hallo!'PHP_EOL PHP_EOL;
$msg .= 'Für die Anmeldung bei »xxx« wurde ein neues Passwort gesetzt.' PHP_EOL PHP_EOL;
$msg .= 'Unabhängig davon wer das getan hat, lauten die neuen Anmeldedaten jetzt sicherheitshalber' PHP_EOL PHP_EOL;
$msg .= 'E-Mail-Adresse   : ??email??' PHP_EOL;
$msg .= 'Das neue Passwort: ??pword??' PHP_EOL PHP_EOL;
$msg .= 'ACHTUNG: Für BEIDE ist  die Groß-/Klein-Schreibung relevant!!' PHP_EOL PHP_EOL;
$msg .= 'Bitte umgehend auf der Seite xxx mit diesen Daten anmelden und das Passwort in eins nach Wahl ändern.' PHP_EOL;
$msg .= 'Nach der Anmeldung erscheint dort direkt einen Link zum „Passwort ändern“.' PHP_EOL PHP_EOL;
$msg .= 'Falls es Fragen zu dieser Nachricht gibt, bitte auf diese (automatisch generierte) E-Mail „antworten“.' PHP_EOL PHP_EOL;

$header = array(); // nötig für deutsche Umlaute
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=utf-8";
$headers[] = "From: {$admin}";
// falls Bcc benötigt wird
// $headers[] = "Bcc: Der Da <mitleser@example.com>";
$headers[] = "Reply-To: {$admin}";
//$headers[] = "Subject: {$betreff}";
$headers[] = "X-Mailer: PHP/".phpversion();

// liefert Zufallsstring mit einstellbarer Länge und (ggf.) wählbaren Zeichen
function random_str(
    
int $length 64,
    
string $keyspace '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
): string {
    if (
$length 1) {
        throw new 
\RangeException("Länge muss positiv sein!");
    }
    
$pieces = [];
    
$max mb_strlen($keyspace'8bit') - 1;
    for (
$i 0$i $length; ++$i) {
        
$pieces []= $keyspace[random_int(0$max)];
    }
    return 
implode(''$pieces);
}

// Prüfen min. 1x Großbuchstabe, Kleinbuchstabe, Zahl, 8 Zeichen lang
function pw_strength(string $pw):bool {
 
$upper preg_match('@[A-ZÄÖÜ]@'$pw);
 
$lower preg_match('@[a-zäöüß]@'$pw);
 
$number    preg_match('@[0-9]@'$pw);
 return(!
$upper || !$lower || !$number || strlen($pw) < 8);
}
?>