Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.comp.lang.php > #4869

Re: gethostbyaddr, bei Fehler keine IP ausgeben

Path csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From Arno Welzel <usenet@arnowelzel.de>
Newsgroups de.comp.lang.php
Subject Re: gethostbyaddr, bei Fehler keine IP ausgeben
Date Sat, 26 Nov 2022 17:17:00 +0100
Lines 65
Message-ID <juesfrFlb84U1@mid.individual.net> (permalink)
References <tlr6lt$agk2$1@solani.org>
Mime-Version 1.0
Content-Type text/plain; charset=UTF-8
Content-Transfer-Encoding 8bit
X-Trace individual.net oXg6ufPXAGpqFaThO/lMGg1r6ONRJWuzLFhqnaweq3Xa2jEnNO
Cancel-Lock sha1:f6KZTN01zZjaJghJJeiiZSl253k=
Content-Language de-DE
In-Reply-To <tlr6lt$agk2$1@solani.org>
Xref csiph.com de.comp.lang.php:4869

Show key headers only | View raw


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

Back to de.comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

gethostbyaddr, bei Fehler keine IP ausgeben Detlef Paschke <schabau@t-online.de> - 2022-11-25 20:56 +0100
  Re: gethostbyaddr, bei Fehler keine IP ausgeben Arno Welzel <usenet@arnowelzel.de> - 2022-11-26 17:17 +0100
    Re: gethostbyaddr, bei Fehler keine IP ausgeben Detlef Paschke <schabau@t-online.de> - 2022-11-28 16:10 +0100

csiph-web