Gibt es trotzdem in PHP eines Benutzers Router verwenden eindeutig zu identifizieren?

StackOverflow https://stackoverflow.com/questions/4281285

  •  28-09-2019
  •  | 
  •  

Frage

Gibt es trotzdem in PHP eines Benutzers Router verwenden eindeutig zu identifizieren? Ich möchte wissen nicht, was die Nutzer auf dem gleichen Router sind.

War es hilfreich?

Lösung

Sie können die Benutzer IP-Adresse abrufen $_SERVER['REMOTE_ADDR'] und anschließend ein traceroute Dienstprogramm verwenden, um den Hopfen zu erhalten und für die Router überprüfen, ob Sie finden möchten, wenn Sie die IP-Adressen der beiden von ihnen wissen.

Unter der Annahme, dass der Router nicht adress übersetzt für sie, sonst das wird nicht funktionieren, da es auf in der Lage, verläßt sich auf den Benutzer über den Router zu kommen. Wenn Router an den Benutzer zurückgeben kann, dann wird es nicht funktionieren. Geeignet für Einwählbenutzer though.

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$router1IP = "123.123.123.123";

$output = array();
exec('traceroute -n ' . $ip, $output, $result);

if ($result == 0) {
    $outputText = implode("\n", $output);
    if (preg_match("/" . preg_quote($router1IP) . "/", $output)) {
        echo "Router 1";
    } else {
        echo "Router 2";
    }
}
?>

Andere Tipps

Die allgemeine Antwort ist im Grunde geht nicht sein - Erkennung der Netzwerktopologie ist eine nicht-triviale Operation (und sicherlich der Pfad Pakete Erkennung nahm man unmöglich von einem Endpunkt gut nahe sein kann). Aber es klingt wie Sie eine Art von spezifischen Topologie haben, die vielleicht, wenn Sie uns mehr darüber erzählen wir in der Lage sein könnte, mit denen Sie zu helfen.

Vorausgesetzt, die folgenden Dinge:

  • Sie haben zwei Ingress-Router
  • Ihr Webserver nur über eine Ethernet-Schnittstelle
  • Sie versuchen, welcher Router den Verkehr zu bestimmen, kam durch

Sie könnten VLAN-Tag alle eingehenden Datenverkehr an jeder Eingangsschnittstelle (und setzen alle Ihre Hosts auf unmarkiert Switch-Schnittstellen), und geben Sie sich eine Schnittstelle alias auf Ihrem Webserver für jedes VLAN, und damit wir wissen, welche virtuelle Schnittstelle Sie kam in auf, Sie wissen, was das Eindringen Router den Verkehr kam.

Das Beste, was Sie tun können, ist eine Benutzer-IP-Adresse identifiziert die $_SERVER['REMOTE_ADDR'] verwenden. Wenn die IP-Adresse entspricht Router, dann haben Sie Glück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top