Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

gethostbyaddr, bei Fehler keine IP ausgeben

0 views
Skip to first unread message

Detlef Paschke

unread,
Nov 25, 2022, 2:56:46 PM11/25/22
to
Hallo,

für eine kleine Auswertung einer Seite, verwende ich einen Aufruf mit
fput, in dem unter anderem die IP und der Hostname des Benutzers
protokolliert werden.

$_SERVER["REMOTE_ADDR"] . ' | ' . gethostbyaddr($_SERVER['REMOTE_ADDR'])

Kann mit gethostbyaddr() der Hostname jedoch nicht aufgelöst werden,
wird ebenso die IP ausgegeben. Im Ergebnis stünde dann zwei mal die IP
in der Ausgabe.

Gibt es einen einfachen kleinen Trick, dass von gethostbyaddr() im Fall
eines Fehler bzw. wenn der Hostname nicht aufgelöst wird, einfach ein
"False" oder irgend so etwas ähnliches ausgegeben wird?

Viele Grüße
Detlef Paschke

--
Das "Zitat des Augenblicks" gibt es nur auf
https://schabau.eu
Meine "Merkzettel"
https://helpdesk.schabau.eu

Arno Welzel

unread,
Nov 26, 2022, 11:17:01 AM11/26/22
to
Detlef Paschke, 2022-11-25 20:56:

> Hallo,
>
> für eine kleine Auswertung einer Seite, verwende ich einen Aufruf mit
> fput, in dem unter anderem die IP und der Hostname des Benutzers
> protokolliert werden.
>
> $_SERVER["REMOTE_ADDR"] . ' | ' . gethostbyaddr($_SERVER['REMOTE_ADDR'])
>
> Kann mit gethostbyaddr() der Hostname jedoch nicht aufgelöst werden,
> wird ebenso die IP ausgegeben. Im Ergebnis stünde dann zwei mal die IP
> in der Ausgabe.

Ja, kommt vor. Nicht jede IP-Adresse kann per rDNS aufgelöst werden.

> Gibt es einen einfachen kleinen Trick, dass von gethostbyaddr() im Fall
> eines Fehler bzw. wenn der Hostname nicht aufgelöst wird, einfach ein
> "False" oder irgend so etwas ähnliches ausgegeben wird?

Nein.

Siehe auch: <https://www.php.net/manual/de/function.gethostbyaddr.php>

"Rückgabewerte:

Gibt bei Erfolg den Hostnamen zurück, im Fehlerfall die unmodifizierte
ip oder false bei einer fehlerhaften Eingabe."

Mein Ansatz wäre:

$ipAddress = $_SERVER["REMOTE_ADDR"];
$hostName = gethostbyaddr($ipAddress);

$result = sprintf(
'%s%s',
$ipAddress,
($ipAddress !== $hostName) ? ' | ' . $hostName : ''
);

Zur Erläuterung, falls ternäre Operatoren nicht bekannt sind - die
dritte Zeile im sprintf() ist eine Abkürzung für sowas:

$ipAddress = $_SERVER["REMOTE_ADDR"];
$hostName = gethostbyaddr($ipAddress);

if ($ipAddress !== $hostName) {
$hostOutput = ' | ' . $hostName;
} else {
$hostOutput = '';
}

$result = sprintf(
'%s%s',
$ipAddress,
$hostOutput
);




--
Arno Welzel
https://arnowelzel.de

Detlef Paschke

unread,
Nov 28, 2022, 10:10:38 AM11/28/22
to
Am 26.11.2022 um 17:17 schrieb Arno Welzel:
> Detlef Paschke, 2022-11-25 20:56:
>
>> Hallo,

Hallo Arno,


>> Gibt es einen einfachen kleinen Trick, dass von gethostbyaddr() im Fall
>> eines Fehler bzw. wenn der Hostname nicht aufgelöst wird, einfach ein
>> "False" oder irgend so etwas ähnliches ausgegeben wird?
>
> Nein.
>
> Siehe auch: <https://www.php.net/manual/de/function.gethostbyaddr.php>
>
> "Rückgabewerte:
>
> Gibt bei Erfolg den Hostnamen zurück, im Fehlerfall die unmodifizierte
> ip oder false bei einer fehlerhaften Eingabe."

das hatte ich auch gelesen aber man weiß ja nie, was der eine oder
andere noch für Geheimwissen hat.

> Mein Ansatz wäre:
>
> $ipAddress = $_SERVER["REMOTE_ADDR"];
> $hostName = gethostbyaddr($ipAddress);
>
> $result = sprintf(
> '%s%s',
> $ipAddress,
> ($ipAddress !== $hostName) ? ' | ' . $hostName : ''
> );

So in dieser Art habe ich es jetzt auch gemacht, vielen Dank
0 new messages