Signatur
Beschreibung
odbc_connection_string_is_quoted() prüft, ob ein übergebener Zeichenkettenwert den Quoting-Regeln für ODBC-Verbindungszeichenketten entspricht. Ein Wert gilt als korrekt gequotet, wenn er mit einer öffnenden geschweiften Klammer ({) beginnt und mit einer schließenden geschweiften Klammer (}) endet, wobei innere geschweifte Klammern (}) korrekt durch Verdopplung (}}) maskiert sein müssen.
ODBC-Verbindungszeichenketten bestehen aus Schlüssel-Wert-Paaren der Form KEY=VALUE;. Enthält ein Wert Sonderzeichen wie Semikolons, Leerzeichen oder geschweifte Klammern, muss er gequotet werden. Diese Funktion ermöglicht es, vor dem Aufbau einer Verbindung zu überprüfen, ob ein Wert bereits korrekt gequotet ist, ohne selbst manuell parsen zu müssen.
Sie wird typischerweise zusammen mit odbc_connection_string_quote() verwendet: Wenn odbc_connection_string_is_quoted() false zurückgibt, kann der Wert mit odbc_connection_string_quote() gequotet werden. So lässt sich doppeltes Quoting vermeiden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $str Pflicht | string | Der zu prüfende Wert einer ODBC-Verbindungszeichenkette. Die Funktion prüft, ob dieser Wert den ODBC-Quoting-Regeln mit geschweiften Klammern entspricht. |
Rückgabewert
true zurück, wenn der übergebene Wert korrekt gequotet ist (d. h. mit { beginnt, mit } endet und innere }-Zeichen durch }} maskiert sind), andernfalls false.Beispiele
Einfache Prüfung eines gequoteten und ungequoteten Wertes
<?php
$quoted = '{mein;Passwort}';
$unquoted = 'mein;Passwort';
var_dump(odbc_connection_string_is_quoted($quoted)); // true
var_dump(odbc_connection_string_is_quoted($unquoted)); // false
Sicheres Zusammenbauen einer ODBC-Verbindungszeichenkette
<?php
function build_odbc_dsn(array $params): string {
$parts = [];
foreach ($params as $key => $value) {
// Nur quoten, wenn der Wert noch nicht korrekt gequotet ist
if (!odbc_connection_string_is_quoted($value)) {
$value = odbc_connection_string_quote($value);
}
$parts[] = $key . '=' . $value;
}
return implode(';', $parts);
}
$params = [
'Driver' => '{ODBC Driver 17 for SQL Server}',
'Server' => 'localhost',
'Database' => 'my;db',
'PWD' => 'geheim}Wort',
];
echo build_odbc_dsn($params);
// Wichtig · Fallstricke
Sicherheitshinweis: Diese Funktion prüft nur die syntaktische Korrektheit des Quotings gemäß ODBC-Standard. Sie schützt nicht vor allen möglichen Injection-Angriffen in Verbindungszeichenketten. Verwerten Sie Benutzereingaben in ODBC-Verbindungszeichenketten stets mit Vorsicht und kombinieren Sie diese Funktion mit odbc_connection_string_quote().
Die Funktion ist erst ab PHP 8.2.0 verfügbar. Für ältere PHP-Versionen muss die Prüfung manuell implementiert werden.
Beachten Sie, dass ein Wert, der ausschließlich aus {} besteht (leere geschweifte Klammern), als gequotet gilt und einen leeren String repräsentiert.