Start · Sprachen · PHP · Referenz · radius_put_int

radius_put_int

Funktion

Fügt einem RADIUS-Request ein Integer-Attribut mit dem angegebenen Typ und Wert hinzu.

seit PHP 5.0.0 Kategorie: misc

Signatur

radius_put_int(resource $radius_handle, int $type, int $value): bool

Beschreibung

radius_put_int() ist Teil der PECL-RADIUS-Erweiterung und wird verwendet, um einem vorbereiteten RADIUS-Paket ein Attribut vom Typ Integer hinzuzufügen. RADIUS (Remote Authentication Dial-In User Service) ist ein Netzwerkprotokoll, das für Authentifizierung, Autorisierung und Abrechnung (AAA) verwendet wird.

Bevor diese Funktion aufgerufen wird, muss ein RADIUS-Request mit radius_create_request() erstellt worden sein. Mit radius_put_int() können Integer-basierte RADIUS-Attribute wie Service-Type, NAS-Port oder Framed-Protocol gesetzt werden. Der Parameter type entspricht dem RADIUS-Attribut-Typ gemäß RFC 2865 oder herstellerspezifischen Erweiterungen.

Die Funktion gibt true bei Erfolg und false bei einem Fehler zurück. Im Fehlerfall kann radius_strerror() verwendet werden, um eine lesbare Fehlermeldung abzurufen. Die Attribute werden beim eigentlichen Request-Versand via radius_send_request() übermittelt.

Parameter

Name Typ Default Beschreibung
$radius_handle Pflicht resource Ein gültiges RADIUS-Handle, das zuvor mit radius_auth_open() oder radius_acct_open() erstellt wurde.
$type Pflicht int Der Attribut-Typ als Integer, z. B. RADIUS_SERVICE_TYPE, RADIUS_NAS_PORT oder RADIUS_FRAMED_PROTOCOL. Vordefinierte Konstanten stehen über die RADIUS-Erweiterung zur Verfügung.
$value Pflicht int Der Integer-Wert des Attributs, z. B. RADIUS_FRAMED für einen Framed-Service-Typ oder eine Port-Nummer.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Attribut erfolgreich hinzugefügt wurde, oder false im Fehlerfall. Bei Fehler kann radius_strerror() zur Diagnose verwendet werden.

Beispiele

RADIUS-Authentifizierungsrequest mit Integer-Attributen aufbauen

<?php
// RADIUS-Handle für Authentifizierung öffnen
$radius = radius_auth_open();

if (!$radius) {
    die('Konnte RADIUS-Handle nicht öffnen');
}

// RADIUS-Server konfigurieren
if (!radius_add_server($radius, '192.168.1.10', 1812, 'geheimespasswort', 3, 3)) {
    die('Fehler beim Hinzufügen des Servers: ' . radius_strerror($radius));
}

// Neuen Authentifizierungsrequest erstellen
if (!radius_create_request($radius, RADIUS_ACCESS_REQUEST)) {
    die('Fehler beim Erstellen des Requests: ' . radius_strerror($radius));
}

// String-Attribute hinzufügen
radius_put_attr($radius, RADIUS_USER_NAME, 'testnutzer');
radius_put_attr($radius, RADIUS_USER_PASSWORD, 'geheimesPasswort123');

// Integer-Attribut: NAS-Port setzen
if (!radius_put_int($radius, RADIUS_NAS_PORT, 1)) {
    echo 'Fehler beim Setzen des NAS-Port-Attributs: ' . radius_strerror($radius);
} else {
    echo 'NAS-Port-Attribut erfolgreich gesetzt.' . PHP_EOL;
}

// Integer-Attribut: Service-Type setzen (Login)
if (!radius_put_int($radius, RADIUS_SERVICE_TYPE, RADIUS_LOGIN)) {
    echo 'Fehler beim Setzen des Service-Type-Attributs: ' . radius_strerror($radius);
} else {
    echo 'Service-Type-Attribut erfolgreich gesetzt.' . PHP_EOL;
}

// Request senden
$result = radius_send_request($radius);
if ($result === RADIUS_ACCESS_ACCEPT) {
    echo 'Authentifizierung erfolgreich!';
} elseif ($result === RADIUS_ACCESS_REJECT) {
    echo 'Authentifizierung abgelehnt.';
} else {
    echo 'Fehler: ' . radius_strerror($radius);
}

radius_close($radius);
?>
NAS-Port-Attribut erfolgreich gesetzt. Service-Type-Attribut erfolgreich gesetzt. Authentifizierung erfolgreich!

RADIUS-Accounting-Request mit Integer-Attributen

<?php
$radius = radius_acct_open();

if (!$radius) {
    die('Konnte RADIUS-Accounting-Handle nicht öffnen');
}

radius_add_server($radius, '192.168.1.10', 1813, 'geheimespasswort', 3, 3);
radius_create_request($radius, RADIUS_ACCOUNTING_REQUEST);

// Framed-Protocol als Integer-Attribut setzen (PPP = 1)
if (!radius_put_int($radius, RADIUS_FRAMED_PROTOCOL, RADIUS_PPP)) {
    echo 'Fehler: ' . radius_strerror($radius);
} else {
    echo 'Framed-Protocol (PPP) erfolgreich gesetzt.' . PHP_EOL;
}

// Session-Timeout in Sekunden setzen
if (!radius_put_int($radius, RADIUS_SESSION_TIMEOUT, 3600)) {
    echo 'Fehler: ' . radius_strerror($radius);
} else {
    echo 'Session-Timeout (3600s) erfolgreich gesetzt.' . PHP_EOL;
}

radius_close($radius);
?>
Framed-Protocol (PPP) erfolgreich gesetzt. Session-Timeout (3600s) erfolgreich gesetzt.

// Wichtig · Fallstricke

Erweiterung erforderlich: radius_put_int() ist Teil der PECL-Erweiterung radius, die separat installiert werden muss (pecl install radius). Sie ist nicht in der PHP-Standardinstallation enthalten.

Reihenfolge beachten: Die Funktion darf erst nach einem erfolgreichen Aufruf von radius_create_request() verwendet werden, da sonst kein aktives RADIUS-Paket existiert, dem das Attribut hinzugefügt werden könnte.

Attribut-Konstanten: Verwende stets die vordefinierten RADIUS_*-Konstanten (z. B. RADIUS_SERVICE_TYPE, RADIUS_NAS_PORT) anstelle von rohen Integer-Werten, um die Lesbarkeit und Wartbarkeit des Codes zu verbessern und Tippfehler zu vermeiden.