2014-07-07 6 views
1

사용자의 IP 주소가 php으로 처음으로 페이지를 방문하는 경우 어떻게 감지됩니까? 사용자가 처음으로 IP로 방문을 감지합니다.

if (!isset($_COOKIE['firsttime'])){ 
    setcookie("firsttime", "no", time()+3600); /* 1 hour */ 
    echo "<script type='text/javascript'>alert('YES');</script>"; 
    exit(); 
} else{ 
    echo "<script type='text/javascript'>alert('NO');</script>"; 
    exit(); 
} 

어떻게 IP가이를 감지 할 ...

이 코드를 해봤지만 쿠키를 사용하지 않으며, 내 브라우저에서 쿠키를 제거하면이 더 이상 분명히 작동?

+0

클라이언트에서 IP 주소를 얻는 방법을 의미 했습니까? – ramirio

+4

많은 사람들이 쿠키를 삭제할 수 있기 때문에 동적 IP 할당을 사용합니다. – andrew

+0

쿠키가 아닌 사용자 클라이언트 IP로 첫 번째 방문을 감지해야합니다. 더 신뢰할 수 없다면 아무 문제 없습니다 :) 도와주세요. –

답변

1

사용자의 첫 방문 (추적 할 수있는 신뢰할 수있는 방법 인에 포함되지 것입니다 @andrew에서 언급했듯이).

프록시 등으로 인해 예상대로 작동하지 않는 경우가 있지만 일반적으로 찾고있는 것을 제공합니다 (look here).

IP 주소를 얻은 후에는 데이터베이스에 저장 한 다음 다른 사람이 방문 할 때마다 조회하여 기존 레코드를 찾을 수 있습니다. 결과가 없다면 새로운 IP가됩니다.

그러나 이것은 방문자가 이미 웹 사이트를 방문한 적이 있는지를 판단하는 매우 좋은 방법은 아닙니다.

가장 신뢰할만한 방법 (완벽하지는 않지만)은 쿠키를 사용하는 것입니다. 방문자가 귀하의 웹 사이트를 방문 할 때 쿠키를 설정하십시오 ... 이것은 여전히 ​​방문자를 추적/태그 지정하는 가장 좋은 방법입니다.

browser fingerprinting을 실험 해보고 싶지만 브라우저 구성을 약간만 변경해도 지문을 변경할 수 있기 때문에 안정성이 떨어집니다. 사소한 변화를 감지하고 현재 지문의 "확률"을 계산하는 복잡한 알고리즘을 작성하지 않으면 데이터베이스에 일치하는 쿠키을 사용하는 것이 좋습니다.

0

$_SERVER['REMOTE_ADDR']; 사용자에게 현재 IP 주소가 제공됩니다 (프록시가 제공되지 않는 경우).

그러나 때문에 ISP의 나눠 동적 IP 주소의 나는 이것이 당신은 일반적으로 $_SERVER['REMOTE_ADDR']에서 잡는하여 방문자의 IP 주소를 얻을 수

+0

어디에서 코드를 입력해야합니까? 예를 게시 할 수 있습니까? –

+0

어디에 넣을 지에 따라 달라집니다. ' andrew

+0

예제에서 "YES"경고와 "NOT"경고를 얻으려면 어떻게해야합니까? 나는 시도했지만 작동하지 않습니다 ... 제발 이것에 대해 새로운 것을 도와주세요. :) –

0

IP 주소가 변경 될 수도 있으므로이 작업을 수행하는 완벽한 방법은 없습니다. 사용자가 Dynamic IP Address 인 경우 주소가 자주 변경 될 수 있습니다.

어느 쪽이든 사용자의 IP Address을 사용하면 서버의 어딘가에 주소를 저장해야합니다. MySQL과 같이 데이터베이스를 설정 한 경우 IP Address을 테이블에 저장할 수 있습니다.

PHP 설명서의 MySQLidocumentation page을 참조하십시오. 내가 MySQL에 독서를 권 해드립니다, 다시

$mysqli = new mysqli("example.com", "user", "password", "database"); 
if (!$mysqli->connect_errno) { 
    //You should validate the IP Address 
    $ip = $_SERVER['REMOTE_ADDR']; 
    $res = $mysqli->query("SELECT IPAddress FROM tbIP WHERE IPAddress='{$ip}' LIMIT 1") 
    if($res !== false){ 
     if($res->num_rows > 0){ 
      //Found 
      echo "<script type='text/javascript'>alert('YES');</script>"; 
     } else { 
      //Not found 
      echo "<script type='text/javascript'>alert('NO');</script>"; 

      //Here you will probably want to INSERT a new record into the Database 
      //tracking the current user. 
     } 
    } 
} 

: 당신이 MySQL에 익숙해지면

, 당신은 다음과 유사한 코드를 작성할 수 있습니다.

데이터베이스에 대한 액세스 권한이없고 cookies이 제거 된 경우 MySQL 호출을 파일에서 읽기위한 호출로 바꾸고 대신 파일에 IP Addresses을 쓸 수 있습니다.이것은 일반적으로 좋은 선택이 아니지만 대안이 없다면 많은 옵션이 없습니다.

관련 문제