회원 로그인시만 사이트 이용 가능하게 하려는데 오류 발생
본문
회원가입쪽을 제외한 나머지 페이지에 접속하려고 할 때, bbs/login.php 로 이동시켜려 합니다.
그누에 어딘가에서 팁을 참고해서 만들었는데 보니까 토큰 에러, 캡챠 생성 안되는 오류가 있습니다만.
여기서 예외처리를 추가해야할 부분이 있을까요?
<?php
if (!defined('_GNUBOARD_')) exit;
//로그인 안해도 되는 페이지 세팅
$temp_array = Array();
$temp_array[] = "login.php";
$temp_array[] = "login_check.php";
$temp_array[] = "register.php";
$temp_array[] = "register_form.php";
$temp_array[] = "register_form_update.php";
$temp_array[] = "password_lost.php";
$temp_array[] = "password_lost2.php";
$temp_array[] = "password_lost3.php";
$temp_array[] = "kcaptcha_image.php";
$temp_array[] = "popup.php";
$pattern = '';
foreach($temp_array as $v){
$pattern .= str_replace('.', '\.', $v) . '|';
}
$pattern = preg_replace("`\|$`", '', $pattern);
//로그인 페이지, 회원가입, 아이디비번 찾기를 제외한 전 페이지 로그인해야만 들어올수 있게 하기
if(!preg_match("`(" . $pattern . ")$`", basename($_SERVER['PHP_SELF'])) && ($is_member == false || empty($member['mb_id']))){
goto_url(G5_URL.'/bbs/login.php');
}
?>
답변 3
에러내용을 알아야 합니다.
추가로 if 조건도 너무 복잡한 느낌이 있습니다.
이런 케이스는 정규표현식 보다는
in_array: https://www.php.net/manual/en/function.in-array
array_search: https://www.php.net/manual/en/function.array-search.php
등의 함수로 더 간결한 표현이 가능합니다.
<?php
$temp_array = array(
'login.php',
'login_check.php',
'login.php',
'login_check.php',
'register.php',
'register_form.php',
'register_form_update.php',
'password_lost.php',
'password_lost2.php',
'password_lost3.php',
'kcaptcha_image.php',
'popup.php'
);
if (in_array(basename($_SERVER['PHP_SELF']), $temp_array) == false) {
goto_url(G5_URL.'/bbs/login.php');
}
?>
오류 내용을 적어 보세요.
가장 간단한게 구현하는 방법은,
접근하지 못하게 하려는 페이지 상단에
if(!$is_member){
alert('회원만 이용할 수 있습니다.', g5_url);
}
이렇게 쓰면 됩니다.
!-->
답변을 작성하시기 전에 로그인 해주세요.