Start · Sprachen · PHP · Referenz · odbc_connection_string_should_quote

odbc_connection_string_should_quote

Funktion

Ermittelt, ob ein Wert einer ODBC-Verbindungszeichenkette gequotet werden sollte.

seit PHP 8.2.0 Kategorie: db

Signatur

odbc_connection_string_should_quote(string $str): bool

Beschreibung

odbc_connection_string_should_quote() prüft, ob ein gegebener Zeichenkettenwert beim Zusammenbauen eines ODBC-Verbindungsstrings in geschweifte Klammern ({...}) eingeschlossen werden muss. Laut ODBC-Spezifikation ist ein Quoten erforderlich, wenn der Wert Leerzeichen, Semikolons, geschweifte Klammern oder andere Sonderzeichen enthält.

Die Funktion ist Teil einer Gruppe von Hilfsfunktionen (zusammen mit odbc_connection_string_quote() und odbc_connection_string_is_quoted()), die das sichere und standardkonforme Aufbauen von ODBC-Verbindungsstrings erleichtern. Sie erlaubt es, vor dem Quoten zu prüfen, ob ein Quoten überhaupt nötig ist, um unnötige Modifikationen zu vermeiden.

Typischer Einsatz ist das dynamische Zusammenstellen von Verbindungsparametern wie Passwörtern, Datenbankpfaden oder Servernamen, die aus Benutzereingaben oder Konfigurationsdateien stammen und möglicherweise Sonderzeichen enthalten können.

Parameter

Name Typ Default Beschreibung
$str Pflicht string Der zu prüfende Wert, der möglicherweise als Teil eines ODBC-Verbindungsstrings verwendet werden soll.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Wert gequotet werden muss (d. h. Zeichen enthält, die eine Quotierung gemäß ODBC-Spezifikation erfordern), andernfalls false.

Beispiele

Einfache Prüfung auf Quotierungsbedarf

<?php
$wert1 = 'MeinPasswort';
$wert2 = 'Passwort mit Leerzeichen';
$wert3 = 'Passwort;mit;Semikolon';

var_dump(odbc_connection_string_should_quote($wert1)); // false
var_dump(odbc_connection_string_should_quote($wert2)); // true
var_dump(odbc_connection_string_should_quote($wert3)); // true
bool(false) bool(true) bool(true)

Verbindungsstring sicher zusammenbauen

<?php
function odbc_build_dsn(array $params): string {
    $parts = [];
    foreach ($params as $key => $value) {
        if (odbc_connection_string_should_quote($value)) {
            $value = odbc_connection_string_quote($value);
        }
        $parts[] = $key . '=' . $value;
    }
    return implode(';', $parts);
}

$params = [
    'Driver'   => '{SQL Server}',
    'Server'   => 'localhost',
    'Database' => 'meine Datenbank',
    'PWD'      => 'geheim;sicher',
];

echo odbc_build_dsn($params);
Driver={SQL Server};Server=localhost;Database={meine Datenbank};PWD={geheim;sicher}

// Wichtig · Fallstricke

Sicherheitshinweis: Verwende diese Funktion stets in Kombination mit odbc_connection_string_quote(), wenn Verbindungsstrings aus nicht vertrauenswürdigen Quellen (z. B. Benutzereingaben) zusammengesetzt werden. Ein nicht korrekt gequoteter Verbindungsstring kann zu unerwartetem Verhalten oder im schlimmsten Fall zu einer Injection führen.

Die Funktion wurde in PHP 8.2.0 eingeführt. In älteren PHP-Versionen muss die Prüfung manuell per regulären Ausdrücken oder String-Suche implementiert werden.

Beachte: Wenn ein Wert bereits in geschweifte Klammern eingeschlossen ist (d. h. bereits gequotet wurde), sollte odbc_connection_string_is_quoted() verwendet werden, um eine doppelte Quotierung zu vermeiden.