Signatur
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
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);
?>
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);
?>
// 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.