채택완료

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

2015-08-31 (월) 05:32:56 3,719

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

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

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

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

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

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

|

답변 4개 / 댓글 4개

채택된 답변
+20 포인트

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

Copy
<?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>';
} 
?>
 
2015-08-31 (월) 14:25:46
<?php if (($list[$i]['wr_level'] && $list[$i]['wr_level'] <= $member['mb_level']) || ($list[$i]['mb_id'] == $member['mb_id'] || $is_admin)) { //레벨제한?>

// 이곳에 보여줄 링크를 작성하세여
<?php } ?>

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

Copy
<?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>';} ?>
 

답변에 대한 댓글 1개

$list[$i]['wr_level'] 에 값이 있을경우는 포함되야해요
다른게시판은 위 변수를 안쓸수도 있어서
그럼
앞에 $list[$i]['wr_level'] &&
이거만 추가하면 될까요?
2015-08-31 (월) 08:29:34
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인가요? 코멘트인가요?)

목록이라고 가정해보면

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

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

답변에 대한 댓글 3개

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없이 하시려면 조건부가 약간 수정이 필요할거에요
등호가 좀 바껴야겠죠

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