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

alert 와 die 사용 질문있습니다 채택완료

김준수사랑 8개월 전 조회 1,414

사이트가 회원레벨말고도 각 게시판별로 구분할게 많이 있어서 

파일을 하나 만들고 그 파일을 상단에 위치시켜서 권한처리를 하고 있습니다.

대략 소스는 아래와 같은 형식들이 들어가 있구요

 

if( preg_match("/write_update.php$/", $_SERVER['PHP_SELF']) || preg_match("/write_comment_update.php$/", $_SERVER['PHP_SELF']) ){

    if($cnt == 0) alert('접근이 불가합니다');

}

 

위와같은 조건문이 많이 있구요

대부분 잘 작동하나 간혹 에러나는 부분이 있더라구요

그래서 살펴보니 alert 형태로 뿌리면 에러나도 die 로 해야하더라구요

이러면은 중복파일을 2개를 만들어서 하나는 alert 하나는 die 이렇게 해서 각각 넣어줘야하나요?

파일위치를 바꾼다든지 다른반향으로 한다던지 방법이 있나요?

 

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

답변 2개

채택된 답변
+20 포인트
glitter0gim
8개월 전

</p>

<p>// 에러 모드를 정의 (예: 'alert' 또는 'die')

define('ERROR_MODE', 'alert'); // 혹은 'die'</p>

<p>// 에러 처리 함수

function handleError($message) {

    if (ERROR_MODE === 'alert') {

        echo "<script>alert('{$message}'); history.back();</script>";

        exit; // 반드시 스크립트 종료

    } else {

        die($message);

    }

}</p>

<p>// 사용 예

if (preg_match("/write_update.php$/", $_SERVER['PHP_SELF']) || preg_match("/write_comment_update.php$/", $_SERVER['PHP_SELF'])) {

    if ($cnt == 0) {

        handleError('접근이 불가합니다');

    }

}</p>

<p>

프로젝트의 에러 처리 로직을 중앙집중화하는 측면에서 좋은 접근 방식 같습니다!(Good idea)

실제 운영 환경에 맞게 추가적인 보완만 잘 이루어진다면 안정적으로 작동할 것이라 합니다.

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

답변에 대한 댓글 2개

김준수사랑
8개월 전
답변 감사합니다.
die 로 해야하는 파일이 많지 않아서
die 해야하는 파일에만 define('ERROR_MODE', ''); 이렇게 정의하고 하면
위에방법대로 해야겠네요 답변 감사합니다. 좋은 방법 터득하고 갑니다
g
glitter0gim
8개월 전
저도, 한 수 배워갑니다. (●'◡'●)

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

8개월 전

에러나는 부분부터 수정해야 하지 않을까요?

질문이 이해되지 않습니다. 에러나는걸 수정하지 않고 결과처리를 하면 

원치 않는 결과가 나오거나 다음 결과도 에러가 날수 있습니다.

 

그래서 살펴보니 alert 형태로 뿌리면 에러나도 die 로 해야하더라구요

이 부분도 이해가 가질 않구요.

die 처리시 사용자가 이후 어떤 내용에 대해서 오류인지 알수가 없습니다.

그냥 죽어버리기 때문에...

중요 변수나 파라미터 전달이 안되었다면 if 로 분기하여 사용자에게 알려주는게 좋습니다.

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

답변에 대한 댓글 1개

김준수사랑
8개월 전
제 질문문법이 이상하여 전달이 좀 잘못된것같습니다.
에러난다는것이
die 하면 정상이구요
alert로하면 화면이 조금 깨진다는 거였습니다.

그래서 die해야하는 페이지도 전부 alert 했을떄처럼 동일하게 나오길 원한거였습니다

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

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

로그인