Signatur
Beschreibung
radius_cvt_string() ist Teil der PECL-Erweiterung radius und wird verwendet, um Rohdaten, die über radius_get_attr() oder radius_get_vendor_attr() aus einem RADIUS-Paket ausgelesen wurden, in eine gewöhnliche PHP-Zeichenkette (string) zu konvertieren.
RADIUS-Attribute werden intern als Byte-Folgen übertragen. Je nach Attributtyp müssen diese Bytes mit der passenden Konvertierungsfunktion interpretiert werden. Für Attribute vom Typ String (z. B. User-Name oder Reply-Message) ist radius_cvt_string() die korrekte Wahl.
Die Funktion ist typischerweise dann sinnvoll, wenn man nach einem erfolgreichen RADIUS-Authentication- oder Accounting-Request die zurückgelieferten Attribute auswerten möchte und dabei textbasierte Felder weiterverarbeiten will, etwa für Logging oder Benutzeranzeige.
- Für Integer-Attribute:
radius_cvt_int() - Für IP-Adressen:
radius_cvt_addr()
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $data Pflicht | string | Die Rohdaten (binäre Zeichenkette) eines RADIUS-Attributs, wie sie von radius_get_attr() zurückgeliefert werden. Der Inhalt wird als Byte-Folge interpretiert und direkt in eine PHP-Zeichenkette umgewandelt. |
Rückgabewert
string.Beispiele
Reply-Message eines RADIUS-Servers auslesen
<?php
// RADIUS-Verbindung aufbauen
$radius = radius_auth_open();
radius_add_server($radius, '192.0.2.1', 1812, 'geheimes_secret', 3, 3);
radius_create_request($radius, RADIUS_ACCESS_REQUEST);
radius_put_attr($radius, RADIUS_USER_NAME, 'testuser');
radius_put_attr($radius, RADIUS_USER_PASSWORD, 'meinpasswort');
$result = radius_send_request($radius);
if ($result === RADIUS_ACCESS_ACCEPT || $result === RADIUS_ACCESS_REJECT) {
while ($attr = radius_get_attr($radius)) {
if ($attr['attr'] === RADIUS_REPLY_MESSAGE) {
// Rohdaten in lesbaren String umwandeln
$message = radius_cvt_string($attr['data']);
echo 'Reply-Message: ' . htmlspecialchars($message) . PHP_EOL;
}
}
}
radius_close($radius);
?>
User-Name-Attribut aus einem Access-Request lesen
<?php
$radius = radius_auth_open();
radius_add_server($radius, '192.0.2.1', 1812, 'geheimes_secret', 3, 3);
radius_create_request($radius, RADIUS_ACCESS_REQUEST);
radius_put_attr($radius, RADIUS_USER_NAME, 'alice');
radius_put_attr($radius, RADIUS_USER_PASSWORD, 's3cret');
if (radius_send_request($radius) === RADIUS_ACCESS_ACCEPT) {
while ($attr = radius_get_attr($radius)) {
if ($attr['attr'] === RADIUS_USER_NAME) {
$username = radius_cvt_string($attr['data']);
echo 'Eingeloggter Benutzer: ' . htmlspecialchars($username) . PHP_EOL;
}
}
}
radius_close($radius);
?>
// Wichtig · Fallstricke
Hinweis zur PECL-Erweiterung: radius_cvt_string() ist nur verfügbar, wenn die PECL-Erweiterung radius installiert und aktiviert ist. Sie ist nicht Teil der PHP-Standardinstallation.
Typauswahl: Stellen Sie sicher, dass das Attribut tatsächlich vom RADIUS-Typ String ist, bevor Sie radius_cvt_string() aufrufen. Falsche Konvertierung von Integer- oder Adress-Attributen führt zu unlesbaren Ergebnissen. Nutzen Sie die entsprechenden Funktionen radius_cvt_int() bzw. radius_cvt_addr() für andere Typen.
Sicherheit: Die zurückgegebene Zeichenkette stammt direkt aus der Netzwerkkommunikation. Vor der Ausgabe im HTML-Kontext sollte htmlspecialchars() verwendet werden, um XSS-Angriffe zu verhindern.