테스트 사이트 - 개발 중인 베타 버전입니다

회원 로그인시만 사이트 이용 가능하게 하려는데 오류 발생 채택완료

라이언허 3년 전 조회 1,858

회원가입쪽을 제외한 나머지 페이지에 접속하려고 할 때, bbs/login.php 로 이동시켜려 합니다.

그누에 어딘가에서 팁을 참고해서 만들었는데 보니까 토큰 에러, 캡챠 생성 안되는 오류가 있습니다만.

여기서 예외처리를 추가해야할 부분이 있을까요?

 

</p>

<p><?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');

}

?></p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
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

등의 함수로 더 간결한 표현이 가능합니다.

</p>

<p><?php</p>

<p>$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');

}

?></p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

가장 간단한게 구현하는 방법은,

접근하지 못하게 하려는 페이지 상단에

</p>

<p>if(!$is_member){</p>

<p>    alert('회원만 이용할 수 있습니다.', g5_url);</p>

<p>}</p>

<p>

이렇게 쓰면 됩니다.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

오류 내용을 적어 보세요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인