Start · Sprachen · PHP · Referenz · ibase_delete_user

ibase_delete_user

Funktion

Löscht einen bestehenden Benutzer aus der Firebird/InterBase-Security-Datenbank über einen aktiven Service-Handle.

seit PHP 4.2.0 Kategorie: db

Signatur

ibase_delete_user(resource $service_handle, string $user_name): bool

Beschreibung

ibase_delete_user() entfernt einen vorhandenen Benutzer vollständig aus der Security-Datenbank von Firebird oder InterBase. Die Funktion erfordert einen zuvor mit ibase_service_attach() hergestellten Service-Handle sowie den exakten Benutzernamen des zu löschenden Kontos.

Die Funktion ist nützlich, wenn Benutzerkonten programmatisch verwaltet werden sollen, etwa im Rahmen einer Administrationsoberfläche oder automatisierten Benutzerbereinigung. Sie entspricht dem SQL-Befehl DROP USER bzw. dem Administrationswerkzeug gsec von Firebird.

Wichtig: Nur Benutzer mit Administratorrechten (z. B. SYSDBA) dürfen andere Benutzer löschen. Der Service-Handle muss daher mit entsprechenden Zugangsdaten erstellt worden sein.

Diese Funktion ist Teil der ibase_*-Erweiterung, die ab PHP 7.4 aus dem PHP-Core entfernt und in das PECL-Paket ibase bzw. Firebird ausgelagert wurde.

Parameter

Name Typ Default Beschreibung
$service_handle Pflicht resource Ein aktiver Service-Handle, der zuvor mit ibase_service_attach() erzeugt wurde. Der Benutzer, unter dem der Handle erstellt wurde, muss Administratorrechte besitzen.
$user_name Pflicht string Der Name des zu löschenden Datenbankbenutzers. Groß-/Kleinschreibung wird bei Firebird/InterBase in der Regel ignoriert.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Benutzer erfolgreich gelöscht wurde, andernfalls false. Im Fehlerfall (z. B. Benutzer existiert nicht, fehlende Rechte) wird zusätzlich eine PHP-Warnung ausgegeben.

Beispiele

Einfaches Löschen eines Firebird-Benutzers

<?php
// Verbindung zum Firebird-Dienst herstellen
$service = ibase_service_attach('localhost', 'sysdba', 'masterkey');

if ($service) {
    $username = 'testuser';

    if (ibase_delete_user($service, $username)) {
        echo "Benutzer '{$username}' wurde erfolgreich gelöscht.";
    } else {
        echo "Fehler: Benutzer konnte nicht gelöscht werden.";
    }

    ibase_service_detach($service);
} else {
    echo "Verbindung zum Firebird-Service fehlgeschlagen.";
}
?>
Benutzer 'testuser' wurde erfolgreich gelöscht.

Benutzer nur löschen, wenn er existiert

<?php
function firebird_user_exists(resource $svc, string $username): bool {
    $users = ibase_server_info($svc, IBASE_SVC_USER_DBPATH);
    // Prüfung über ibase_add_user schlägt fehl, wenn Benutzer existiert
    // Daher Hilfsfunktion: Versuch, den Benutzer zu ändern
    // Eine direkte Existenzprüfung ist nicht in der ibase-API vorhanden.
    // Hier exemplarisch über Fehlerunterdrückung:
    $result = @ibase_modify_user($svc, $username, 'dummycheck123!');
    // Wenn Fehler auftrat, existiert der Benutzer möglicherweise nicht
    return ($result !== false);
}

$service = ibase_service_attach('localhost', 'sysdba', 'masterkey');

if ($service) {
    $usernameToDelete = 'olduser';

    // Direkt löschen und Fehler abfangen
    if (@ibase_delete_user($service, $usernameToDelete)) {
        echo "Benutzer '{$usernameToDelete}' gelöscht.";
    } else {
        echo "Benutzer '{$usernameToDelete}' konnte nicht gelöscht werden (existiert er?)";
    }

    ibase_service_detach($service);
}
?>
Benutzer 'olduser' gelöscht.

// Wichtig · Fallstricke

Deprecation / Verfügbarkeit: Die ibase_*-Funktionen wurden mit PHP 7.4 als veraltet markiert und mit PHP 8.0 aus dem PHP-Core entfernt. Für aktuelle Projekte muss die PECL-Erweiterung ibase oder alternativ php-firebird installiert werden.

Sicherheitshinweis: Übergeben Sie den Benutzernamen niemals ungeprüft aus Benutzereingaben. Obwohl es sich nicht um SQL im engeren Sinne handelt, kann ein manipulierter Benutzername dazu führen, dass unbeabsichtigte Konten gelöscht werden. Validieren Sie Benutzernamen mit einer Whitelist (z. B. nur alphanumerische Zeichen).

Berechtigungen: Der Service-Handle muss mit einem Konto mit Datenbankadministratorrechten (typischerweise SYSDBA) erstellt worden sein, da gewöhnliche Benutzer keine anderen Benutzer löschen dürfen.