접속 허용을 할 IP대역을 지정할 경우 간단하게 사용할 수 있는 방법이다.
내가 접속한 IP주소 확인은 http://www.findip.kr 에 접속하면 Public IP 주소를 알려준다.
그런데 findip.kr 사이트에서 받은 결과와 운영하는 서버에서 인식하는 IP주소가 다를 수 있다.
이때에는 운영하는 서버에서 인식하는 IP기준으로 필터링을 해야 한다.
<?php
$UserIP = $_SERVER['REMOTE_ADDR']; // 접속한 사용자의 IP주소 불러오기
echo $UserIP."<br />";
echo $_SERVER['HTTP_USER_AGENT']; // 접속자의 사용자 브라우저 환경값 가져오기
$ip_extract = explode(".",$UserIP); //.로 분리해서 배열로 저장
$UserIP_trim = $ip_extract[0].".".$ip_extract[1].".".$ip_extract[2];
$ipcheck_1 = "100.200.200"; // 접속 허용 IP 블럭
if($UserIP_trim == $ipcheck_1) {
// 인증시키는 창으로 이동시킨다.
$url = $PHP_SELF;
$url = urlencode($url);
echo ("<meta http-equiv='Refresh' content='0; URL=list.php'>");
exit;
} else {
echo ("<script>alert('허용된 사용자가 아닙니다');window.top.location.replace('index.php');</script>");
}
?>
다음과 같이 해도 된다.
<?php
if(strpos($UserIP, "100.200.200.") !== false) { // 포함
} else { // 미포함
}
?>
DB에 접속을 허용할 user 를 등록한 경우에만 허용하고자 한다면 아래와 같이 함수를 만들어서 사용하면 된다.
<?php
class LoginClass {
function allowIPaddressChk(){
global $db;
$access_ip=$_SERVER['REMOTE_ADDR'];
$sql ="select count(*) from allowHosts where ipaddr='".$access_ip."'";
$result=mysql_query($sql);
if($row=mysql_fetch_row($result)){
if($row[0] == '1'){
return 1;
} else {
return 0;
}
}
}
} // End of Class
접속 허용 여부를 체크할 PHP 파일에 아래 코드를 추가한다.
require_once "dbconnect.php";
require_once "phpclass/LoginClass.php";
$access=new LoginClass();
if($access->allowIPaddressChk() == '0'){
echo $_SERVER['REMOTE_ADDR'];
exit;
}
'Web 프로그램 > PHP 응용 및 활용' 카테고리의 다른 글
PHP 일일 통계 테이블 구조 및 코드 (0) | 2016.11.16 |
---|---|
접속자 통계 구하기 (0) | 2016.10.24 |
문자열 숫자 표기 (0) | 2016.04.23 |
킴스큐 함수 활용 (0) | 2016.04.19 |
[PHP] 날짜 함수 정리 (0) | 2015.08.03 |