2011-03-22 3 views
2

시나리오 나는이 사이트에서 다른 액세스 수준을 가지고 있지만 모든 유효한 사용자에 대해 작업하는 간단한 로그인 프로세스를 가지고 있지만 다른 사용자와는 별도로 페이지에 액세스하려고합니다.PHP 로그인 인증 문제 (초보자)

// CHECKS IF THE USER HAS LOGGED IN 
session_start(); 

if(!isset($_SESSION['logged_in']) || !$_SESSION['logged_in']){ 
    header("location:index.php"); 
} 

if(!$_SESSION['mystatus']=='1'){ 
    header("location:access_error.php"); 
} 

그래서 기본적으로 내가 그러나이없는 그들이에 로그인 한 경우이 페이지는 하나의 액세스 레벨을 가진 사용자가 액세스하려면, 여기

내 페이지의 시작에 내 코드입니다 올바른 액세스 수준에 따라 적절하게 지시하십시오.

현재 다른 액세스 수준으로 로그인 한 사용자 (예 : 3)가이 페이지를 계속 볼 수 있습니다.

도와주세요.

많은 감사,

+0

'보다 작음'및 '보다 큼'연산자 나 비트 비교를 사용할 수 있습니다. 따라서보다 세분화 된 액세스 제어가 가능합니다. – Lekensteyn

+0

하지만 액세스 수준이 높은 모든 사용자가 페이지에 액세스하도록하려면 '보다 큼'이라고 말하면 분명히 괜찮습니다. 내 사례가 액세스 수준 2 인 사용자 인 경우이 페이지에 액세스 할 수 없습니다. – buymypies

+0

이 경우 비트 연산자를 살펴볼 수 있습니다. 즉, 각 비트는 권한이며 0 (액세스 없음) 또는 1 (액세스)으로 설정할 수 있습니다. 다음 읽기 : [Wikipedia article] (http://en.wikipedia.org/wiki/Bitwise_operation). [PHP의 비트 연산]에 대한 질문 (http://stackoverflow.com/q/2131758/427545). – Lekensteyn

답변

1
if($_SESSION['mystatus']!='1'){ 
    header("location:access_error.php"); 
} 
3

!$_SESSION['mystatus'] == 1(!$_SESSION['mystatus']) == 1로 해석됩니다. $_SESSION['mystatus']에는 1과 3과 같은 false가 아닌 값이 포함되어 있으므로 true!truefalse으로 바뀌므로 false == 1이 일치하지 않습니다.

사용하여 NOT EQUAL 연산자 (!=) :이 같은

$_SESSION['mystatus'] != 1 
+0

thankyou guys. D – buymypies

+0

@buymypies :이 질문에 대한 답변이 있으면이 대답의 왼쪽에있는 'v'를 클릭하여 동의 함으로 표시하십시오. – Lekensteyn

2
if(!$_SESSION['mystatus']=='1'){ 

구조는 PHP를 처음 사용하고 연산자 우선 순위 규칙을 파악하지 특히, 매우 위험하다.

이것은 "mystatus 세션 변수에있는 것이 아닌 논리를 취하고 문자열 '1'과 비교합니다."

당신이 원하는 것은 mystatus 변수가 문자열과 '1'의 캐릭터와 동일하지 인 경우

if ($_SESSION['mystatus'] !== '1') { 

는 "다음 true로 평가합니다. 추시가 나에게 작동

+0

+1, 사람들은 항상'=','=='및'==='과 그 목적을 혼동합니다. – Jakub

+0

숫자 1 대신 문자열 '1'을 사용하는 데 아무런 이유가 없습니다. –

+0

@Col : 저도 그렇습니다.하지만 그것이 OP에있는 방법입니다. –

0

. 설정 사용자가이 권한을 검색하고 페이지와 비교 로그인하려고 자신의 페이지에 액세스 및 데이터베이스의 권한의 수준.

$permission = $_SESSION['PERMISSION'] 
$access=2; // level of access 
if ($permission>$access){ 
    $_SESSION["pagina"]="yourPage.php"; 
    header("Location: accessPermission.php"); 
} 

나는에 대한 작품 희망 당신.