erkennen Gibt es eine Möglichkeit, Verbindung von Benutzer mithilfe von PHP-Skript zu erkennen. Willst du 3g, WIFI, 4g und Lite erkennen. Ich möchte herausfinden, woher die Benutzer kommen. Ich habe bereits eine Lösung in JavaScript, aber ich möchte es in PHP aus bestimmten Gründen.Benutzerverbindung 3g, 4g, Wifi oder Lite mit Hilfe von PHP
Antwort
Eine etwas mögliche Lösung ist die Verwendung von geoip_isp_by_name PHP-Funktion, um den Namen des ISP und dann durch einige API oder Scraping zu überprüfen, welche Technologien dieser ISP bietet.
Sie können manchmal den Unterschied zwischen WIFI und nicht-WIFI unterscheiden, und manchmal können Sie keinen Unterschied feststellen.
Sie können nie den Unterschied zwischen 3G/4G/LTE mit PHP unterscheiden.
Annahmen und Terminologie
Ich gehe davon aus, dass ein Smartphone über einen Browser auf Ihrem HTTP-Server verbunden ist, und dem Server verwendet PHP die Anfrage zu bearbeiten. Wenn dies nicht der Fall ist, klären Sie bitte Ihre Frage.
Terminologie: Ich werde das Wort "ISP" verwenden, um auf Unternehmen zu verweisen, die Internetdienste bereitstellen, aber keine Telefonnetzbetreiber sind.
Welche Informationen erhält der Server?
Wenn Ihr Gerät mit einem PHP-Server verbindet, den Server einige Informationen über sich selbst sagt, der Server die IP-Adresse des Geräts kennen kann, User-Agent usw.
Das Problem
Die Problem ist, dass der Browser "Egal", welche Verbindung es ist, und es hat keine Auswirkungen auf die Informationen, die der Browser an den Server sendet. Wenn der Browser 3G/4G/LTE verwendet, würde er genau die gleichen Informationen senden, die er gesendet hätte, wenn er auf Wifi geschaltet wäre.
Semi "Proof": Das HTTP-Protokoll, das die Daten vom Gerät zum HTTP-Server überträgt, kennt den zugrunde liegenden Netzwerkstack überhaupt nicht.
Wie identifizieren wir die Verbindung dann?
Der einzige Unterschied zwischen einem Wifi/Non-Wifi ist: Die IP-Adresse.
ISPs haben eine große Liste von reservierten IP-Adressen. Wenn Sie feststellen können, dass diese IP-Adresse zu einem bestimmten ISP gehört, muss dies eine Wifi-Verbindung sein.
Ähnlich haben Telefon Carrier eine große Liste von reservierten IP-Adressen. Wenn Sie feststellen können, dass diese IP-Adresse zu einem bestimmten Telefonanbieter gehört, muss dies eine 3G/4G/LTE-Verbindung sein!
es in der Praxis tut
Wir müssen irgendwie jede IP-Adresse zu einem ISP/Carrier korrelieren, eine Möglichkeit, dies zu tun, ist eine riesige Datenbank aller ISP/Carrier haben und ihre jeweiligen reservierten IP-Adressen. In der Praxis kann eine einfache WHOIS-Suche die Quelle aufdecken.
Zum Beispiel ein WHOIS-Lookup für eine zufällige IP: 109.168.97.31 unter anderem offenbart:
Beschr: 013 Netvision
Netvision ist ein israelischer Internet-Provider. Wenn es sich also um eine Telefonverbindung handelt (Sie können dies mit dem Benutzer-Agent überprüfen), muss dies eine WLAN-Verbindung sein!
es in PHP
tun habe ich ein wenig Wissen über PHP, vielleicht jemand mit einem besseren Wissen besser Sektion bearbeiten. Der Code geht wahrscheinlich wie folgt aus:
$company_name = geoip_isp_by_name($_SERVER['REMOTE_ADDR']);
$this_is_a_wifi_connection = is_this_wifi($company_name);
Die Funktion is_this_wifi
den Firmennamen in einer Datenbank nachzuschlagen sollte und entscheiden, ob es sich um ein Mobilfunk-Netzbetreiber oder ein ISP-Unternehmen.
Probleme
Sie müssen noch eine Liste von ISP/Carrier haben, um Ihre WHOIS-Lookups mit ihnen zu vergleichen.
Manche Leute benutzen VPNs/Anonymity-Netzwerke, eine IP-Adresse kann liegen.
Einige Unternehmen sind sowohl ISPs als auch Carrier, Sie werden nie wissen, ob es in diesem Fall eine Wifi-Verbindung ist.
Vielleicht sollte ich dies als ein Projekt auf GitHub initiieren. –
Definitiv! Ich habe bisher keine gebrauchsfertige API gefunden. –
Wikipedia beherbergt eine (teilweise) Liste von Mobilfunknetzbetreibern. Es könnte ein guter Anfang sein: http://en.wikipedia.org/wiki/List_of_mobile_network_operators – Stephan
In PHP oder einer anderen serverseitigen Sprache ist das nicht möglich. Sie müssen diese Art von Informationen vom Client (Browser) erhalten und derzeit gibt es keinen Standard-HTTP-Header, der Browser verwenden kann, um Informationen zum Verbindungstyp zu übergeben (List of HTTP header fields).
Der Browser kann den Verbindungstyp kennen und Sie können diese Informationen möglicherweise mithilfe von clientseitigen Skripts (z. B. JavaScript) oder Plugins abrufen.
- 1. Wie bestimmt man den iOS-Verbindungstyp (Edge, 3G, 4G, Wifi)?
- 2. WiFi/3G-Änderungen beobachten
- 3. Erkennung von 3G oder Wifi Netzwerkwiederherstellung
- 4. Webservice-Anruf funktioniert nicht nach dem Wechsel zwischen Wifi zu 3G oder 3G zu Wifi
- 5. Prüfen, ob Mobilgerät WIFI oder Data/3G verwendet
- 6. Identifizieren von iPad WiFi von iPad 3G Programmatisch
- 7. Wifi vs. Edge/3G und KomponentenSeparatedByString (NSString)
- 8. iPhone aktiver Netzwerktyp (2G, 3G, WiFi)
- 9. Adobe Air - Erkennen, ob die Verbindung WIFI, 3G oder EDGE ist
- 10. iphone wifi/3G Verbindung fallen Probleme
- 11. Wie testet man die Download- und Upload-Geschwindigkeit wifi/3g?
- 12. Gibt es eine Möglichkeit zu erkennen, welche Art von Verbindung ich verwende? WiFi, 3G oder Ethernet?
- 13. Wenn Netzwerktyp wifi zu 3g ändern, Web-Service-Verbindung Zeitüberschreitung
- 14. Können Wifi und 3G gleichzeitig auf Android funktionieren?
- 15. Verwenden Sie gleichzeitig Wifi und 3G-Schnittstelle auf Android?
- 16. Hilfe zum Verteilungsprofil für iphone LITE Version
- 17. Sammeln iPhone 3g Status
- 18. Not-Wifi-Verbindung mit Telefonerkennungsprüfung
- 19. 2G oder 3G Daten API
- 20. Wie kann ich die MAC-Adresse eines mobilen 3G/4G-Breitbandgeräts ändern?
- 21. Was wird mit bestehenden Verbindungen passieren, wenn zwischen 3g/wifi wechseln
- 22. Wie erkennt man die mobile Verbindung ist 2G/3G/WIFI mit Javascript
- 23. Hilfe mit php Schleife
- 24. Datei senden mit Hilfe von PHP
- 25. Hilfe mit PHP-Schleife
- 26. Crop Bildgröße ändern mit Hilfe von PHP
- 27. Inkrementieren PHP-Variable mit Hilfe von Javascript?
- 28. ASIHTTPRequest mit iPhone 3G
- 29. Android-Anwendung funktioniert auf WIFI und 3G (Ohne Proxy), aber nicht auf 3G (Wenn Proxy und Port zugewiesen sind)
- 30. WiFi oder mobiles Netzwerk erkennen
Ich glaube nicht, dass das möglich ist. Warum sollte die Client-Maschine es Ihnen sagen? Was ist die Javascript-Lösung? –
In JavaScript finde ich das [navigator.connection] (https://developer.mozilla.org/en/DOM/window.navigator.connection) Wie wir Clients IP mit PHP finden können, warum ich dachte, dass da ist jede Lösung, um seinen Verbindungstyp zu erhalten. –
und das ist nur in Firefox. –