2015-01-04 3 views
0

내 MySQL 데이터베이스에서 게임을 통해 로그인 한 다음 사이트에서 사용자 이름을 입력하고 통계를 확인하십시오. 이것은 내 API의 내 정보 스 니펫입니다.IP 주소를 기반으로 동적 PHP 컨텐츠 표시

elseif ($_GET['task'] == 'login') { 
     $get_user = $_GET['user']; 
     $get_db = 'engine'; 
     $result = mysql_query("SELECT * FROM $get_db WHERE name = '" . mysql_real_escape_string($get_user) . "'", $link); 
      while($data = mysql_fetch_array($result)) { 
       echo '{"task":"login","password":"'; echo $data['hash']; 
       echo '","lastip":"'; echo $data['lastip']; 
       echo '","timestamp":"'; echo $data['logindate']; 
       echo '"}'; 
      } 
    } 

귀하의 IP가 최근에 서버에 로그인 한 경우 팝업 될 홈페이지의 검색 텍스트 상자 아래에 한 줄의 텍스트를 추가하려고합니다. "이봐, 네가 사용자 이름이 아니니?"라고 말할 것입니다.

이 작업을 수행하는 데 필요한 코드 유형은 무엇입니까? 나는 그들의 IP를 요구하고, 그것으로 인증 한 모든 사용자를 위해 데이터베이스를 검색하고, 그들의 타임 스탬프에 기초하여 가장 최근의 것을 표시 할 것을 확인해야 할 것이다.

+0

동일한 ip! = 같은 사람 ... 대신 쿠키를 사용하십시오. – Orangepill

+0

필자는 여기 Orangepill에 동의하는 경향이 있습니다 ... 아래 답변을 통해 목표를 달성하는 데 도움이 될지라도 실제로는 올바른 (안전한) 방법이 아닙니다. – Mooseknuckles

답변

0

$_SERVER['REMOTE_ADDR'] 페이지를 보는 사람의 IP 주소를 알려줍니다.

거기에서 쿼리의 lastip 필드와 비교하면됩니다.

$userIP = $_SERVER['REMOTE_ADDR']; 
$query = "SELECT * FROM ".$get_db." WHERE lastip = ".$userIP." ORDER BY logindate DESC LIMIT 1"; 

또는 그 라인을 따라 무엇인가.

0

뷰어의 IP가 포함 된 $_SERVER['REMOTE_ADDR']을 사용할 수 있습니다. 그럼 당신은 (. 그것은 wildcard입니다. '%'는 0 개 이상의 문자를 나타냅니다)

SELECT name FROM 'users' where users.known_ips LIKE '%$ip%' AND users.loggedin = 0 ORDER BY lastlogin DESC LIMIT 1; 

실행할 수 그리고 그들은 이제까지 사용한 경우 당신은 그들의 이름을 얻을 것이다

mysqli_stmt_bind_results($ipquery,$name); 
mysqli_stmt_fetch($ipquery); 
# Now $name = first username found 

이 방법을 사용할 수 있습니다 해당 컴퓨터에 로그인합니다.

1

당신은 모두 $ _SERVER [ 'REMOTE_ADDR']$ _SERVER [ 'HTTP_X_FORWARDED_FOR'] 공용 IP를 얻을 수있는을 사용할 수 있습니다 때때로 두 번째 경우에 사설 IP를 사용합니다.

그런데 old mysql_*() functions are deprecated as of PHP 5.5에 주목하십시오. mysqli 또는 PDO_MySQL 확장을 사용해야한다.

관련 문제