Start · Sprachen · PHP · Referenz · oci_password_change

oci_password_change

Funktion

Ändert das Passwort eines Oracle-Benutzers über eine bestehende OCI8-Verbindung.

seit PHP 5.0.0 Kategorie: db

Signatur

oci_password_change(resource $connection, string $username, string $old_password, string $new_password): bool

Beschreibung

oci_password_change() ermöglicht es, das Passwort eines Oracle-Datenbankbenutzers direkt über eine aktive OCI8-Verbindung zu ändern. Dies ist besonders nützlich, wenn ein Benutzer sich mit einem abgelaufenen Passwort anmeldet und das Passwort im selben Schritt erneuert werden muss.

Die Funktion kann in zwei Modi verwendet werden: Entweder wird eine bereits bestehende Verbindungsressource übergeben, oder man gibt als erstes Argument einen Verbindungsstring (Datenbank-DSN) an, wodurch eine neue Verbindung mit dem alten Passwort hergestellt und das Passwort gleichzeitig geändert wird. Letzteres ist besonders praktisch bei abgelaufenen Passwörtern, bei denen eine normale Verbindung schon fehlschlagen würde.

Die Passwortänderung erfolgt mit den Rechten des übergebenen Benutzers selbst – es sind keine DBA-Privilegien erforderlich. Oracle erzwingt dabei die konfigurierten Passwortrichtlinien (Mindestlänge, Komplexität etc.), die in der Datenbank hinterlegt sind.

Diese Funktion gehört zur OCI8-Erweiterung und setzt voraus, dass PHP mit Oracle-Unterstützung kompiliert wurde (--with-oci8).

Parameter

Name Typ Default Beschreibung
$connection Pflicht resource|string Eine gültige OCI8-Verbindungsressource (zurückgegeben von oci_connect(), oci_pconnect() oder oci_new_connect()) oder ein Verbindungsstring (z. B. '//localhost/XE'), wenn gleichzeitig eine neue Verbindung hergestellt werden soll.
$username Pflicht string Der Oracle-Benutzername, dessen Passwort geändert werden soll.
$old_password Pflicht string Das aktuell gültige (ggf. abgelaufene) Passwort des Benutzers.
$new_password Pflicht string Das neue Passwort, das gesetzt werden soll. Muss den Oracle-Passwortrichtlinien der Datenbank entsprechen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück. Im Fehlerfall wird false zurückgegeben und ein OCI8-Fehler kann über oci_error() abgerufen werden.

Beispiele

Passwort über bestehende Verbindung ändern

<?php
$conn = oci_connect('myuser', 'altesPasswort123', '//localhost/XEPDB1');

if (!$conn) {
    $err = oci_error();
    trigger_error('Verbindung fehlgeschlagen: ' . $err['message'], E_USER_ERROR);
}

$result = oci_password_change($conn, 'myuser', 'altesPasswort123', 'NeuesPasswort456!');

if ($result) {
    echo 'Passwort wurde erfolgreich geändert.';
} else {
    $err = oci_error($conn);
    echo 'Fehler beim Ändern des Passworts: ' . $err['message'];
}

oci_close($conn);
Passwort wurde erfolgreich geändert.

Passwort bei abgelaufener Verbindung ändern (ohne vorherige Verbindung)

<?php
// Verbindungsstring statt Ressource übergeben – ideal bei abgelaufenem Passwort
$result = oci_password_change(
    '//oraclehost:1521/XEPDB1',
    'myuser',
    'abgelaufenPasswort!',
    'NeuesPasswort789#'
);

if ($result) {
    echo 'Passwort erfolgreich erneuert. Bitte erneut anmelden.';
} else {
    $err = oci_error();
    echo 'Passwortänderung fehlgeschlagen: ' . htmlspecialchars($err['message']);
}
Passwort erfolgreich erneuert. Bitte erneut anmelden.

// Wichtig · Fallstricke

Sicherheitshinweise:

  • Das alte und neue Passwort sollten niemals in Logs, Fehlermeldungen oder Ausgaben erscheinen. Achte darauf, dass display_errors in Produktivumgebungen deaktiviert ist.
  • Das neue Passwort sollte serverseitig auf Mindestanforderungen geprüft werden, bevor es an Oracle übergeben wird, um aussagekräftige Fehlermeldungen ohne Oracle-Internansichten zu liefern.
  • Oracle-Passwortrichtlinien (Profil-Einschränkungen wie PASSWORD_VERIFY_FUNCTION) werden serverseitig erzwungen – eine fehlgeschlagene Änderung deutet meist auf Richtlinienverletzungen hin.
  • Die Funktion setzt die installierte OCI8-Erweiterung voraus. Prüfe mit phpinfo() oder extension_loaded('oci8'), ob sie verfügbar ist.