Start · Sprachen · PHP · Referenz · radius_cvt_string

radius_cvt_string

Funktion

Wandelt Rohdaten aus einem RADIUS-Attribut in eine lesbare PHP-Zeichenkette um.

Kategorie: misc

Signatur

radius_cvt_string(string $data): string

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

Typ
string
Beschreibung
Gibt den aus den Rohdaten gelesenen String zurück. Da RADIUS-String-Attribute direkt als Zeichenkette übertragen werden, entspricht der Rückgabewert in der Regel dem unveränderten Inhalt der Rohdaten als PHP-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);
?>
Reply-Message: Willkommen im Netzwerk.

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);
?>
Eingeloggter Benutzer: alice

// 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.