Ich muss die MAC- und die IP-Adresse der Connect-Clients kennen, wie kann ich das in PHP tun?
Wie kann ich die MAC- und die IP-Adresse eines verbundenen Clients in PHP abrufen?
Neun
Paul Dixon
Server-IP
Sie können die Server-IP-Adresse von erhalten $_SERVER['SERVER_ADDR']
.
MAC-Adresse des Servers
Für die MAC-Adresse könnten Sie die Ausgabe von analysieren netstat -ie
unter Linux bzw ipconfig /all
unter Windows.
Client-IP-Adresse
Sie können die Client-IP von erhalten $_SERVER['REMOTE_ADDR']
Client-MAC-Adresse
Die Client-MAC-Adresse steht Ihnen außer in einem besonderen Fall nicht zur Verfügung: wenn sich der Client im selben Ethernet-Segment wie der Server befindet.
Also, wenn Sie eine Art LAN-basiertes System und Ihre Clients aufbauen sind im selben Ethernet-Segment, dann könnten Sie die MAC-Adresse erhalten, indem Sie die Ausgabe von analysieren arp -n
(Linux) bzw arp -a
(Fenster).
Bearbeiten: Sie fragen in Kommentaren, wie Sie die Ausgabe eines externen Befehls erhalten – eine Möglichkeit besteht darin, Backticks zu verwenden, z
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);
#look for the output line describing our IP address
foreach($lines as $line)
{
$cols=preg_split('/\s+/', trim($line));
if ($cols[0]==$ipAddress)
{
$macAddr=$cols[1];
}
}
Was aber, wenn sich der Client nicht in einem LAN befindet?
Nun, Sie haben Pech, es sei denn, Sie können den Kunden dazu bringen, diese Informationen freiwillig bereitzustellen und auf andere Weise zu übermitteln.
-
Wie erhalte ich die Ausgabe von arp -a mit PHP?
– Neveen
14. September 2009 um 12:04 Uhr
-
@paulDixon Hallo, das ist ein alter Beitrag, und ich frage mich, ob es eine neue Möglichkeit gibt, die Mac-Adresse zu erhalten.
– jcho360
21. Juni 2012 um 12:58 Uhr
-
@jcho360 Es ist immer noch nicht möglich, die MAC-Adresse eines Clients abzurufen. Ich erwarte sowieso nicht, dass dies passiert, da die MAC-Adresse keinen Kommunikationswert hat und daher nicht im Anforderungsheader gespeichert wird.
– Bärenwolf
3. Juli 2012 um 12:18 Uhr
-
@Bearwulf vielen Dank für die Antwort, das dachte ich, gibt es eine Möglichkeit, eindeutige Computer zu identifizieren, die mit einer Site verbunden sind?
– jcho360
3. Juli 2012 um 14:17 Uhr
-
@jcho360 Persönlich würde ich eine Kombination aus IP-Adresse + Informationen anfordern und daraus einen Hash erstellen, zum Beispiel md5($_SERVER[‘REMOTE_ADDR’] . $_SERVER[‘HTTP_USER_AGENT’]);. Es ist definitiv nicht kugelsicher, aber es ist ein Anfang. Ein weiterer einfacherer und sicherer Weg ist das Setzen eines Cookies mit einem eindeutigen Hash. Wenn Sie dieses Cookie verwenden, wissen Sie immer, welcher Benutzer sich mit Ihrer Website verbindet.
– Bärenwolf
5. Juli 2012 um 11:50 Uhr
Michal Tatarynowicz
Die MAC-Adresse eines Clients (im Sinne des Rechners, der den HTTP-Request abgesetzt hat) wird von jedem Router zwischen Client und Server überschrieben.
Die Client-IP wird bequem dem Skript in bereitgestellt $_SERVER['REMOTE_ADDR']
. In einigen Szenarien, insbesondere wenn sich Ihr Webserver hinter einem Proxy (d. h. einem Caching-Proxy) befindet $_SERVER['REMOTE ADDR']
wird die IP der zurückgeben Proxyund es wird oft einen zusätzlichen Wert geben $_SERVER['HTTP_X_FORWARDED_FOR']
die die IP des ursprünglichen Anfrageclients enthält.
Manchmal, insbesondere wenn Sie es mit einem anonymisierenden Proxy zu tun haben, den Sie nicht kontrollieren, gibt der Proxy nicht die echte IP-Adresse zurück, und Sie können nur auf die IP-Adresse des Proxys hoffen.
Ich glaube nicht, dass Sie die MAC-Adresse in PHP erhalten können, aber Sie können die IP von erhalten $_SERVER['REMOTE_ADDR']
Variable.
-
Die Mac-Adresse ist nur für lokale Netzwerke sichtbar, Sie können auf die Mac-Adresse jedes Geräts außerhalb seines lokalen Netzwerks zugreifen, z. B. wird Ihre Mac-Adresse in Ihrem lokalen WLAN-Router gespeichert und sichtbar, und außerhalb davon werden alle Geräte in Ihrem Netzwerk gespeichert verwenden und mit derselben IP-Adresse kommunizieren, die der Router in die Mac-Adresse zurückübersetzt und intern sendet.
– Dheeraj Thedijje
16. Oktober 2016 um 9:05 Uhr
Für Windows Server denke ich, dass Sie dies verwenden können:
<?php
echo exec('getmac');
?>
McJ
Alles, was Sie tun müssen, ist, arp in eine andere Gruppe zu stecken.
Standard:
-rwxr-xr-x 1 root root 48K 2008-11-11 18:11 /usr/sbin/arp*
Mit Befehl:
sudo chown root:www-data /usr/sbin/arp
Sie erhalten:
-rwxr-xr-x 1 root www-data 48K 2008-11-11 18:11 /usr/sbin/arp*
Und da Apache ein Daemon ist, der unter dem Benutzer www-data läuft, kann er diesen Befehl jetzt ausführen.
Wenn Sie also jetzt ein PHP-Skript verwenden, z.
<?php
$mac = system('arp -an');
echo $mac;
?>
Sie erhalten die Ausgabe von Linux arp -an
Befehl.
-
Dadurch erhalten Sie nur die MAC-Adressen der Geräte in Ihrem lokalen Netzwerk.
– Benutzer149341
17. August 2011 um 5:11 Uhr
-
Ändern der Gruppe der
arp
Binär ist überflüssig,www-data
hat noch Ausführungsberechtigungen von derother
ummodus.– Urkunde02392
6. März 2014 um 13:36 Uhr
pankaj
Du kannst bekommen MAC Adresse bzw Physikalische Adresse mit diesem Code
$d = explode('Physical Address. . . . . . . . .',shell_exec ("ipconfig/all"));
$d1 = explode(':',$d[1]);
$d2 = explode(' ',$d1[1]);
return $d2[1];
Ich habe viele Male explodiert, weil shell_exec (“ipconfig/all”) vollständige Details des gesamten Netzwerks zurückgeben. also musst du nach und nach aufteilen. Wenn Sie diesen Code ausführen, erhalten Sie
dein MAC-Adresse 00-##-##-CV-12 //Dies ist eine gefälschte Adresse nur zur Show.
-
Dadurch erhalten Sie nur die MAC-Adressen der Geräte in Ihrem lokalen Netzwerk.
– Benutzer149341
17. August 2011 um 5:11 Uhr
-
Ändern der Gruppe der
arp
Binär ist überflüssig,www-data
hat noch Ausführungsberechtigungen von derother
ummodus.– Urkunde02392
6. März 2014 um 13:36 Uhr
Ali
Verwenden Sie diese Klasse (https://github.com/BlakeGardner/php-mac-address)
Dies ist eine PHP-Klasse zur Manipulation von MAC-Adressen auf Unix-, Linux- und Mac OS X-Betriebssystemen. Es wurde hauptsächlich geschrieben, um beim Spoofing für drahtlose Sicherheitsüberprüfungen zu helfen.
IP-Adresse von was? Von dem Client, der verbunden ist?
– Palantir
14. September 2009 um 8:48 Uhr
Adresse des Servers oder eines Besuchers?
– KiNgMaR
14. September 2009 um 8:48 Uhr
Zu welchem Zweck möchten Sie die MAC-Adresse? Ist Ihnen bewusst, dass es vom Benutzer geändert werden kann?
– Benutzer207421
13. Mai 2012 um 23:31 Uhr
@EJP Ich habe einen Anwendungsfall für die MAC-Adresse. Ich möchte je nach Gerät, das die Webseite anfordert, unterschiedliche Informationen bereitstellen. Gibt es eine andere Möglichkeit, eindeutige Informationen des Geräts zu erhalten, das die Seite anfordert?
– Dante
29. Mai 2018 um 20:39 Uhr