2014-04-26 5 views
6

PHP 스크립트를 사용하여 사용자 연결을 검색하는 방법이 있습니까? 3g, WIFI, 4g 및 Lite를 감지하고 싶습니다. 사용자가 어디에서 왔는지 감지하고 싶습니다. 이미 JavaScript로 된 솔루션이 있지만 몇 가지 이유로 PHP에서 원합니다.PHP를 사용하여 3g, 4g, wifi 또는 lite 사용자 연결 감지

+0

나는 그것이 가능하지 않다고 생각합니다. 왜 클라이언트 컴퓨터가 당신에게 말합니까? 자바 스크립트 솔루션이란 무엇입니까? –

+0

자바 스크립트에서 나는이 [navigator.connection] (https://developer.mozilla.org/en/DOM/window.navigator.connection)을 찾았습니다. PHP를 사용하여 클라이언트 IP를 찾을 수있는 것처럼 나는 그곳에 있다고 생각했습니다. 연결 솔루션을 얻을 수있는 모든 솔루션. –

+0

그리고 파이어 폭스에만 있습니다. –

답변

0

몇 가지 가능한 해결책은 geoip_isp_by_name PHP 함수를 사용하여 ISP의 이름을 얻은 다음 일부 API를 통해 또는이 ISP가 제공하는 기술을 조사하는 것입니다.

18

때때로 WIFI와 WIFI의 차이점을 알 수 있으며 때로는 차이점을 알 수 없습니다.

당신은 결코 3G/4G/LTE와 PHP의 차이점을 말할 수 없습니다.

가정 및 용어

나는 스마트 폰 브라우저를 통해 HTTP 서버에 연결되어 있다고 가정하고, 당신의 서버는 요청을 처리하기 위해 PHP를 사용합니다. 그렇지 않은 경우 귀하의 질문을 명확히하십시오.

용어 : 인터넷 서비스를 제공하지만 전화 사업자가 아닌 회사를 말하는 데 "ISP"라는 단어를 사용합니다.

서버에 대한 정보는 무엇입니까?

장치는 PHP 서버에 연결하면, 그 자체에 대한 몇 가지 정보가, 서버 장치의 IP 주소를 알 수있는 서버, 사용자 에이전트 등을 알려줍니다

문제

문제는 브라우저가 어떤 연결인지 상관하지 않으며 브라우저가 서버에 보내는 정보에 아무런 영향을 미치지 않는다는 것입니다. 브라우저가 3G/4G/LTE에 있으면 Wi-Fi를 사용하는 경우와 동일한 정보를 전송합니다.

세미 "증명": 장치에서 HTTP 서버로 데이터를 전송하는 HTTP 프로토콜은 기본 네트워크 스택을 완전히 모릅니다.

어떻게 연결을 식별합니까?

와이파이/비 -Wifi의 유일한 차이점은 다음과 같습니다. IP 주소.

ISP에는 예약 된 IP 주소가 많이 있습니다. 이 IP 주소가 특정 ISP에 속한다는 것을 감지 할 수 있으면 Wi-Fi 연결이어야합니다.

마찬가지로 전화 사업자에는 예약 된 IP 주소 목록이 있습니다. 이 IP 주소가 특정 전화 회사에 속한다는 것을 감지 할 수 있으면 3G/4G/LTE 연결이어야합니다! 우리는 어떻게 든 ISP/캐리어 각 IP 주소의 상관 관계를 필요

연습에 그 일을

는이 작업을 수행하는 한 가지 방법은 모든 ISP의의/운반의 거대한 데이터베이스와 해당 예약 된 IP의를하는 것입니다. 실제로 WHOIS 간단한 조회를 통해 소스를 확인할 수 있습니다.

예를 들어, 임의 IP에 대한 WHOIS 검색 : 109.168.97.(31)는 다른 것들 사이에 계시 :

DESCR : 013 Netvision

Netvision는 이스라엘 인터넷 제공 업체입니다. 따라서 전화 연결 인 경우 (사용자 에이전트를 사용하여 확인할 수 있음) Wi-Fi 연결이어야합니다.

PHP에 그 일을

나는 PHP의 작은 지식, 더 나은이 섹션을 편집합니다 더 나은 지식을 가진 아마 사람이있다. 코드는 아마 다음과 같이 진행됩니다

$company_name = geoip_isp_by_name($_SERVER['REMOTE_ADDR']); 
$this_is_a_wifi_connection = is_this_wifi($company_name); 

기능 is_this_wifi가 데이터베이스에 회사 이름을 조회하고이 전화 캐리어 또는 ISP (인터넷 서비스 공급자)인지 여부를 결정해야합니다.

문제

  • 당신은 여전히 ​​그들과 함께 당신의 WHOIS 조회를 비교하기 위해 ISP의/운반의 목록이 필요합니다.

  • 일부 사람들은 VPN/익명 성 네트워크를 사용하며 IP 주소가있을 수 있습니다.

  • 일부 회사는 ISP와 이동 통신사 모두이므로 이러한 경우 Wi-Fi 연결인지 여부는 알 수 없습니다.

+0

github에서 프로젝트로 시작해야 할 수도 있습니다. –

+0

확실히! 지금까지 준비가되어있는 API는 발견되지 않았습니다. –

+0

위키 피 디아는 모바일 네트워크 운영자의 (일부) 목록을 제공합니다. 좋은 시작일 수 있습니다. http://en.wikipedia.org/wiki/List_of_mobile_network_operators – Stephan

0

PHP 또는 기타 서버 측 언어에서는 불가능합니다. 클라이언트 (브라우저)에서 그런 종류의 정보를 얻어야하고 현재 브라우저가 연결 유형 정보 (List of HTTP header fields)를 전달하는 데 사용할 수있는 표준 HTTP 헤더가 없습니다.

브라우저에서 연결 유형을 알고있을 수 있으며 클라이언트 측 스크립트 (예 : 자바 스크립트) 또는 플러그인을 사용하여 정보를 가져올 수 있습니다.