Überprüft, ob der übergebene Hash mit den übergebenen Optionen übereinstimmt

# password_needs_rehash

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

password_needs_rehash — Überprüft, ob der übergebene Hash mit den übergebenen Optionen übereinstimmt

### Beschreibung

function password_needs_rehash(string `$hash`, string|int|null `$algo`, array `$options` = []): bool

Diese Funktion überprüft, ob der übergebene Hash den gleichen Algorithmus und die gleichen Optionen nutzt, wie in den übergebenen Optionen abgegeben. Falls nicht, wird angenommen, dass erneutes Hashen notwendig ist.

### Parameter-Liste

`hash`

  Ein Hash, der durch password_hash() erzeugt wurde.

`algo`

  Eine Konstante für den Passwort-Algorithmus, die den Algorithmus zum hashen des Passwortes angibt.

`options`

  Ein assoziatives Array mit Optionen. Siehe auch Konstanten für Passwort-Algorithmen für Informationen zu den von den jeweiligen Algorithmen unterstützten Optionen.

### Rückgabewerte

Gibt `true` zurück, falls der Hash erneut gehasht werden muss, damit die übergebenen Parameter `algo` und `options` übereinstimmen, sonst `false`.

### Changelog

Version | Beschreibung
--- | ---
7.4.0 | Der Parameter `algo` erwartet nun einen String, akzeptiert aber aus Gründen der Abwärtskompatibilität noch immer Integer.

### Beispiele

Beispiel #1 Die Verwendung von password_needs_rehash()

`<?php
$password = 'rasmuslerdorf';
$hash = '$2y$12$4Umg0rCJwMswRw/l.SwHvuQV01coP0eWmGzd61QH2RvAOMANUBGC.';
$algorithm = PASSWORD_BCRYPT;
// Der Aufwand-Parameter cost von bcrypt kann sich im Lauf der Zeit ändern,
// da die Hardware besser wird
$options = ['cost' => 13];
// Überprüfe den gespeicherten Hash gegen das Klartextkennwort
if (password_verify($password, $hash)) {
// Prüfe, ob sich der Algorithmus oder die Optionen geändert haben.
if (password_needs_rehash($hash, $algorithm, $options)) {
// Falls ja, dann erzeuge einen neuen Hash und ersetze den alten
$newHash = password_hash($password, $algorithm, $options);
// Aktualisiere den Benutzerdatensatz mit dem $newHash
}
// Führe die Anmeldung durch.
}
?>`
`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open