Zugang A: Konfiguration

Erstellt am 08.03.2022 Aktualisiert am 01.06.2024 Lesedauer ≤ 1 Min.

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

Mit diesem Skript 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°

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);
}
?>