변수 다시한번 문의드립니다.

변수 다시한번 문의드립니다.

QA

변수 다시한번 문의드립니다.

본문

일전에 올린 질문이 변수설정이 잘못 착각하여 다시한번 문의드립니다.

 

<?php if (!($list[$i]['wr_level'] && $list[$i]['wr_level'] > $member['mb_level'])) { //레벨제한?>
링크
<?php } //레벨제한?>​

 

$list[$i]['wr_level'] 에 값이 있고

$list[$i]['wr_level'] 값이 내 레벨보다 높으면 "링크"를 출력하지않는다.

단, 글쓴이거나 관리자는 위 변수 무시 

 

파란부분은 어떻게 처리하면 좋은지요?

이 질문에 댓글 쓰기 :

답변 4

wr_level 이 없는 게시판이면 출력을 해야 한다는건가요 안해야 한다는 건가요

 

 


<?php 
// wr_level 이 설정되지 않은 게시판에서는 링크를 그냥 출력함
if( !isset($list[$i]['wr_level']) || ($list[$i]['wr_level'] <= $member['mb_level']) || ($list[$i]['mb_id'] == $member['mb_id']) || $is_admin) 
{
    echo '<a href="'.$list[$i]['href'].'">링크</a>';
} 
?>
​<?php 
// wr_level 이 설정되지 않은 게시판에서는 링크를 출력하지 않음
if( isset($list[$i]['wr_level']) && (($list[$i]['wr_level'] || ($list[$i]['wr_level'] <= $member['mb_level']) || ($list[$i]['mb_id'] == $member['mb_id']) || $is_admin)) 
{
    echo '<a href="'.$list[$i]['href'].'">링크</a>';
} 
?>  
 

 

if문

을 보니 ! 이게 맨 앞에 붙어있네요

이것의 의미는 다음과 같겠습니다.

 

$list[$i]['wr_level'] 의 값이 없다

&& <== 그리고

$list[$i]['wr_level'] 의 값이 $member['mb_level'] 크지 않을때 가 될거 같습니다.

 

!이게 없었다면 클때 라는 의미가 되겠지만 부정의 의미인 '!' 이 붙었기 때문에 그 반대가 되겠네요

 

즉 , wr_level 값이 없고 회원의 레벨이 wr_level 보다 작을때 조건에 충족할텐데

이 조건문이 질문자님이 원하시는건지 모르겠지만

 

이러한 조건문이 과연 충족될수 있을까 하는 의문이 생기네요

 

결국 이 조건문을 충족하려면 회원레벨이 있고 wr_level 이 없을때만 충족되겠네요

 

앞에 ! 이거를 제거하신다면 wr_level 값이 있고 회원레벨이 wr_level 보다 작을때의 조건이 되겠네요

 

여기서 관리자거나 글쓴이인경우의 조건을 더 덧붙이려면

 

(근데 이 조건문 소스가 붙는것이 목록스킨인가요? list.skin.php인가요? 코멘트인가요?)

목록이라고 가정해보면

 


<?php if (($list[$i]['wr_level'] && $list[$i]['wr_level'] > $member['mb_level']) && ($list[$i]['mb_id'] != $member['mb_id'] && !$is_admin)) { //레벨제한?>
 
echo "접근 권한이 없습니다.";
<?php } ?>

 

이렇게 변형하시면 되겟는데요^^ 

list.skin.php 에 사용을 할거구요.

<a href="<?php echo $list[$i]['href'] ?>">

$list[$i]['wr_level'] 에 값이 있고
$list[$i]['wr_level'] 값이 본인의 레벨보다 높다면 링크를 안보이게 할 예정입니다.
이때 본인이 쓴글이거나 관리자는 무조건 링크가 나와야겟죠......

변수 어렵네요 헤갈리기도 하고 ㅡㅜ

<?php if (($list[$i]['wr_level'] && $list[$i]['wr_level'] > $member['mb_level']) && ($list[$i]['mb_id'] != $member['mb_id'] && !$is_admin)) { //레벨제한?>
<?php }else{?>
<a href="<?php echo $list[$i]['href'] ?>">
                <?php } //레벨제한?>

이렇게 작성하니 되는데 <?php }else{?> 변수안만들고 할수는 없겠죠?

else를 안쓰시면 보안에 문제도 있을수 있으니
왠만하면 사용하시는게 좋아요

꼭 이글에만 국한된 답변은 아니구요 ㅎㅎ

아무튼 else없이 하시려면 조건부가 약간 수정이 필요할거에요
등호가 좀 바껴야겠죠

wr_level 이 회원레벨 보다 낮거나, 작성자이거나, 관리자이면 출력하면 되겠죠 


<?php 
if( ($list[$i]['wr_level'] <= $member['mb_level']) || ($list[$i]['mb_id'] == $member['mb_id']) || $is_admin) 
{
    echo '<a href="'.$list[$i]['href'].'">링크</a>';
} 
?> 
 
<?php if (($list[$i]['wr_level'] && $list[$i]['wr_level'] <= $member['mb_level']) || ($list[$i]['mb_id'] == $member['mb_id'] || $is_admin)) { //레벨제한?>

// 이곳에 보여줄 링크를 작성하세여
<?php } ?>
답변을 작성하시기 전에 로그인 해주세요.
전체 123,672 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT