2013-02-19 4 views
0

저는 postgreSQL의 새 버전입니다. 버전 9.1을 사용하고 있습니다. 다른 권한을 가진 다른 사용자로 로그인 시스템을 만들고 싶습니다. 내가 마음에 무엇을 가지고다른 사용자와 함께 postgreSQL을 작성하십시오.

는 ....

간단한 사용자가있다 "방문자"그에게 전화 할 수 있습니다. 사용자 테이블에서만 "선택"할 수 있습니다. 누군가 로그인과 패스워드를 제공하면 php는 로그인과 패스워드를 가져 와서 "visitor"로 db에 연결합니다. 일치하는 쌍을 발견하는 경우, 다음 등 세션을 시작하고 있습니다 (동일 테이블에서 통과/주어진 로그를 전달/로그)

session_start(); 
     $_SESSION['authenticated']=true; 
      while ($arr=pg_fetch_array($r)) { 

사용자의 ID

$_SESSION['c_id']=$arr['c_id']; 

을 저장할 수 있습니다 및 수와 같은 사용자의 "역할"을 저장하십시오. 역할은 사용자 테이블에있는 간단한 int입니다. 그것은 각 사용자의 권리를 정의합니다. 1이면 사용자가 테이블을 업데이트/삽입/삭제할 수 있습니다. 2 인 경우 2 개의 테이블을 업데이트/삽입/삭제할 수 있고 3 인 경우 두 개의 테이블을 업데이트/삽입/삭제할 수 있으며 "수준"1 및 2 (수퍼 유저)의 새 사용자를 추가 할 수 있습니다.

이것은 단순히 각 사용자마다 다른 menous가 있다는 것을 의미하므로 simle "if"를 사용하여 다른 menous로 안내 할 수 있습니다.

$_SESSION['role']=$arr['role']; 

if ($_SESSION['role']==1){header('Location:menouOne.php');} 
elseif ($_SESSION['role']==2) {header('Location:menouTwo.php');} 
elseif ($_SESSION['role']==3) {header('Location:menouThree.php');} 

menouOne 예를 들어, 전용 "갱신/삽입/삭제"및 menouThree도 menouOne 외에 "새 사용자를 추가"했다가 있습니다.

이 연습은 나에게 좋은 것처럼 들리지만 많은 다른 파일을 만들어야합니다.

그래서, 내 질문에

  1. 이 좋습니다, 또는 훨씬 더/빠르고 쉽게 있나요?

  2. postgreSQL에서 새로운 사용자를 만드는 방법에 대한 링크가 있습니까? 나는 어떤 것을 발견했지만 여전히 혼란 스럽다.

  3. postgreSQL에 md5 보안을 추가하는 것과 관련된 링크가 있습니까?

답변

0

개인적으로 나는이 같은 페이지 및 해당 페이지 내에서 다른 설정 사이 switch 모든 사용자를 보낼 것 감사드립니다. 예를 들어

<? 
$_SESSION['role']=$arr['role']; 
header("location:themenu.php"); 
exit; 
?> 

<? 
//themenu.php 
session_start(); 
switch($_SESSION['role']) 
{ 
    case 1://html for role 1 
    { 
     $controls['update'] = '<div id="contr_update">update</div>'; 
     $controls['delete'] = '<div id="contr_delete">delete</div>'; 
     $controls['insert'] = '<div id="contr_insert">insert</div>'; 
     break; 
    } 
    case 2://html for role 2 
    { 
     $controls['update'] = '<div id="contr_update">update</div>'; 
     $controls['delete'] = '<div id="contr_delete">delete</div>'; 
     $controls['insert'] = '<div id="contr_insert">insert</div>'; 
     $controls['adduser'] = '<div id="contr_adduser">add new user</div>'; 
     break; 
    } 
    case 3://html for role 3 
    { 
     $controls['update'] = '<div id="contr_update">update</div>'; 
     $controls['delete'] = '<div id="contr_delete">delete</div>'; 
     $controls['insert'] = '<div id="contr_insert">insert</div>'; 
     $controls['adduser'] = '<div id="contr_adduser">add new user</div>'; 
     $controls['other'] = '<div id="contr_other">other functions</div>'; 
     break; 
    } 
    default: 
    { 
     header("location:login.php"); 
     exit; 
    } 
} 
?> 
<html> 
<head> 
... 
</head> 
<body> 
...some html 
<? echo $controls['update']; ?> 
...some more html 
<? echo $controls['delete']; ?> 
...some more html 
<? echo $controls['insert']; ?> 
...some more html 
<? echo $controls['adduser']; ?> 
...some more html 
<? echo $controls['other']; ?> 
</body> 
</html> 

그런 다음 제공된 암호를 비교할 수 있도록 MD5로 암호화해야 데이터베이스에 암호를 저장할 때.

$ 암호 = MD5 사용자가 로그인 ($ password); 데이터베이스에 $ 암호 저장.

사용자가 로그인 할 때 위와 동일하게 두 개의 암호화 된 암호를 비교하여 일치하는지 확인하십시오.

+0

@ Andy 흥미로운 접근 방식입니다. 정말 고맙습니다. – slevin

관련 문제