문제

나는 운이 좋게도 이것을 여러 번 시도했습니다.읽고 나서 이 게시물, 이 일을 다시 하고 싶은 마음이 들었습니다.그렇다면 다음이 왜 작동하지 않는지 말해 줄 수 있습니까?

<?php

$guest = 1;
$editor = 2;
$admin = 4;

$user = $editor;

if( $user == ($editor | $admin) ) {
    echo "Test";    
}

?>
도움이 되었습니까?

해결책

비트 OR 연산자(|)를 사용하여 비트를 설정하고 AND 연산자(&)를 사용하여 비트를 확인합니다.코드는 다음과 같아야 합니다.

<?php

    $guest = 1;
    $editor = 2;
    $admin = 4;

    $user = $editor;

    if( $user & ($editor | $admin) ) {
        echo "Test";    
    }

?>

바이너리와 비트 연산자의 기능을 정확히 이해하지 못한다면 가서 배워야 합니다.이 작업을 수행하는 방법을 훨씬 더 잘 이해하게 될 것입니다.

다른 팁

바퀴를 재발명하지 않으려면 다음과 같은 ACL/인증 시스템을 살펴보십시오. 젠드 ACL 그리고 젠드 인증?둘 다 전체적으로 Zend Framework와 독립적으로 사용될 수 있습니다.액세스 제어는 까다로운 상황이므로 최소한 다른 시스템이 어떻게 작동하는지 살펴보는 것이 좋습니다.

PHP를 사용한 지 오랜 시간이 지났지만 이것이 작동할 것이라고 가정하겠습니다.

<?php

    $guest = 1;
    $editor = 2;
    $admin = 4;

    $user = $editor;

    if( ($user == $editor) || ($user == $admin) ) {
        echo "Test";    
    }

?>

나는 이것을 오류보고에 사용했는데 꽤 잘 작동합니다.사용자 권한에 관해서는 매우 잘 작동해야 합니다. 데이터베이스의 각 사용자 권한에 대해 여러 열을 가질 수도 있고 데이터베이스에 하나의 사용자 수준 열을 가질 수도 있습니다.이 옵션을 선택하세요.

(2 | 4)는 6으로 평가되지만 2 == 6은 거짓입니다.

@mk:(2 | 4)는 6으로 평가됩니다.

$guest = 1;
$editor = 2;
$admin = 4;

$user = $editor;

if (user == $editor || $user == $admin) {
    echo "Test";
}

멋지네요. CMS에서 권한을 부여하는 가장 좋은 방법인 것 같습니다.예?아니요?

어쩌면, 나는 실제로 그런 식으로 해본 적이 없습니다.내가 한 일은 비트 연산자를 사용하여 데이터베이스의 단일 열에 있는 단일 숫자의 "예 또는 아니오" 설정 전체를 저장하는 것입니다.

권한의 경우 데이터베이스에 권한을 저장하려는 경우 이 방법이 효과적일 것 같습니다.누군가가 일부 콘텐츠를 게시하고 관리자와 편집자에게만 표시되기를 원하는 경우, 결과를 저장하기만 하면 됩니다.

 ($editor | $admin)

데이터베이스에 넣은 다음 확인하려면 다음과 같이하십시오.

 if ($user & $database_row['permissions']) {
       // display content
 } else {
       // display permissions error
 }

제 생각에는 이것은 확장성이 좋지 않습니다.실제로 대규모 프로젝트에서 사용해 본 적은 없지만 CMS에서는 이것을 사용하기가 너무 복잡해 보입니다.

그것은 항상 당신이 필요로 하는 것에 달려 있습니다.Zend Framework를 이미 알고 계시다면 이전에 제안한 Zend_Acl/_Auth 제안을 따르겠습니다.그러나 모든 프레임워크에는 비슷한 구성 요소가 함께 제공된다는 점을 명심하세요.

또 생각나는 것은 라이브사용자.나는 그것으로 작업하는 것도 아주 좋아합니다.

나는 당신이 거의 모든 것을 할 수 있다고 생각하며 접근 방식은 매우 단순해 보이지만 (모든 if()를 통해) 응용 프로그램 중간에 많은 ACL 논리를 배치하게 되므로 제한적이기도 합니다.단순하고 확장 가능하게 유지하기 위해 할 수 있는 가장 좋은 일은 아닙니다.;)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top