점검 소스를 이용중인데 2개 이상의 아이피 설정이 가능한가요?
본문
<?php
if($_SERVER['REMOTE_ADDR'] != '아이피주소') {
header("Location: /maintenance.php");
exit;
}
?>
안녕하세요 현재 위 점검소스를 이용중입니다.
만약에 111.111.111.111이라는 아이피와 222.222.222.222라는 아이피만 접근할 수 있도록 설정을 어떻게 해야할까요?
<?php
if($_SERVER['REMOTE_ADDR'] != '111.111.111.111' , '222.222.222.222' ) {
header("Location: /maintenance.php");
exit;
}
?>
이런식으로 구분하는 방법좀 알고 싶습니다.
관리자 페이지에서 접근 ip는 아이피가 종종 변경되기 때문에 head 에서 고치고 싶습니다.
답변 2
기초 + 조건 뒤집기 팁. 참고로 추가합니다.
if ( 참 || 참 ) {
// 접속 허용
} else {
// 접속 비허용
}
// 참↔거짓, ||(OR)↔&&(AND) ... 그대로 뒤집으면 아래처럼 됩니다.
// 이 조건 뒤집기를 알아두면 피가 되고 살이 됩니다.
if ( 거짓 && 거짓 ) {
// 접속 비허용
} else {
// 접속 허용
}
// 질문의 코드에 아이피를 하나 더 추가하려면, 아래처럼 조건을 추가해주면 됩니다.
// 코드가 길어지니, in_array() 함수를 이용하는 것이 훨씬 간단하겠죠? '-');
if ( $_SERVER['REMOTE_ADDR']=='아이피1' || $_SERVER['REMOTE_ADDR']=='아이피2' ) {
// 접속 허용
} else {
// 접속 비허용
}
if ( $_SERVER['REMOTE_ADDR']!='아이피1' && $_SERVER['REMOTE_ADDR']!='아이피2' ) {
// 접속 비허용
} else {
// 접속 허용
}
// 참고로 swich()문을 이용한 처리 방법
switch ( $_SERVER['REMOTE_ADDR'] ) {
case '아이피1':
case '아이피2':
// 접속 허용
break;
default:
// 접속 비허용
}
// in_array()보다 빠른 방법 - 값이 많을 때 유용.
$allow_ip = array_fill_keys(['아이피1', '아이피2'], 0); // 0, '', 1 등 변수 설정만 되면 OK. (null 제외)
// 아래처럼 할당해도 됩니다.
// $allow_ip = [];
// $allow_ip['아이피1'] = 0;
// $allow_ip['아이피2'] = 0;
if ( isset($allow_ip[$_SERVER['REMOTE_ADDR']]) ) { // !isset()으로 하면, 허용/비허용 반대
// 접속 허용
} else {
// 접속 비허용
}
// 아참! 접속 비허용 부분에 질문의 주소 이동 코드 넣으면 끝. 기타 생략.
+ switch
- https://www.php.net/manual/en/control-structures.switch.php
- http://docs.php.net/manual/kr/control-structures.switch.php
+ array_fill_keys()
- https://www.php.net/manual/en/function.array-fill-keys.php
+ isset()
- https://www.php.net/manual/en/function.isset.php
- http://docs.php.net/manual/kr/function.isset.php
+ PHP type comparison tables (PHP 자료형 비교표)
!-->$Auth = ['111.111.111.111', '122.122.122.122'];
if(!in_array($_SERVER['REMOTE_ADDR'], $Auth)){
}