2012-12-18 2 views
1

사용자가 admin (2)이거나 noarmal user (1) 인 경우 다른 내용을 표시하려고합니다. 로그인 잘 작동하지만 사용자가 'usertype'1 또는 2를 가지고 있는지 확인하기가 어렵습니다. PHP $ _SESSION을 사용하고 싶습니다.

<?php 

    mysql_connect('localhost', 'root', ''); 
    mysql_select_db('news'); 

    $sql = "SELECT users_tbl.usertype FROM users_tbl"; 
    $result = mysql_query($sql); 
    $user = mysql_fetch_array($result); 
    $_SESSION['user'] = $user['user']; 
    $_SESSION['usertype'] = $user['usertype'];   

    if($_SESSION['user']['usertype'] == 2) 
    {?> 
    <h1>Only admin stuff</h1> 

    <$? }//Endif user is admin(2) ?> 

을 아마 대신 일을 :

session_start(); 
if(isset($_POST['userid']) && isset($_POST['password'])){ 
$userid  = $_POST['userid']; 
$password = $_POST['password']; 

$dbc  = mysqli_connect('localhost', 'root', '', 'news'); 
if(!$dbc){ 
echo "Cannot connect to database"; 
exit; 
} 

$query  = "SELECT * FROM users_tbl WHERE email = '$userid' AND password = sha1('$password')"; 
$result  = $dbc->query($query); 
if($result->num_rows) 
{ 
$_SESSION['valid_user'] = $userid; 
} 
$dbc->close(); 
} 
if(isset($_SESSION['valid_user'])){ 
header("location:prefs.php"); 
}else{ 
header("location:login.php"); 
echo 'Error'; 
} 

이 난 시도 것입니다 : 이것은 내 authentication.php입니다

<!-- Log in --> 
<form method="post" action="authentication.php"> 
    <input type="text" name="userid" placeholder="E-mail" required/> 
    <input type="password" name="password" placeholder="Password" required/><br> 
    <button type="submit" name="submit" class="btn">Log in</button> 
</form> 

:

내 로그인 폼이다 사용자가 관리자인지를 매번 확인하기 위해 $ _SESSION [ 'usertype']을 저장 한 다음이 값을 사용하여 사용자가 2인지 확인하고, 관리자, 어쩌면 사용자가 로그인 할 때? 그러나 나는 이것을 어떻게하는지 모른다. 나는 이것에 아주 새롭다.

+1

'$ _SESSION' 변수를 사용하기 전에'session_start()'를 호출해야합니다. 이것이 설정하지 않은 이유 중 하나 일 수 있습니다. – Stu

+0

$ _SESSION [ 'valid_user'] isset – user1906437

답변

0

if($_SESSION['usertype'] == 2) 
{ 
    //do stuff here 
} 
if ($_SESSION['usertype']) == 1) 

{ 
//do stuff here 
} 

편집을 시도 : 당신은 너무 많은 물건을 쓰고 싶지 않는 경우 을 사용자의 하나가 바로이

if ($_SESSION['usertype']) == 1 or $_SESSION['usertype']) == 2) 

    { 
       //do stuff here for them both admin and users 
     if($_SESSION['usertype'] == 2) 
            { 
            //do extra stuff here for only admin 
            } 
    } 
+0

나는 이것을 시도했지만 admin 또는 일반 사용자로 로그인 할 때 동일한 내용인지 session_start()가 모든 페이지 상단에 있는지 확인하십시오. – user1906437

+0

아니요, 관리자 인 경우 각각 다른 컨텐츠를 수행하십시오. –

+0

관리자가 여분의 직원을 포함하고 싶지 않다면 내 업데이트 된 답변을보세요. –

0

저장할 수있는을 내부에 당신은 원하는 관리자 물건을 포함하여 세션 변수가있는 사용자 유형

일단 로그인하면 1 또는 2의 사용자 유형으로 db를 확인하고 $ _SE와 같은 세션 변수를 사용하여 해당 변수를 저장해야합니다 SSION [ 'user_type'].

그래서 추적 할 수 있습니다.

+0

어떻게 확인할 수 있습니까? – user1906437

0

사용자 유형이 인 컬럼을 해당 테이블에 추가하십시오. 테이블에서 데이터를 가져 오는 동안 해당 열의 값을 확인하십시오. 값이 관리자이면 그렇지 않은 경우 텍스트를 표시하십시오.

2

나는이 질문이 오래된 문제라는 것을 알고 있지만 지난 주 인터넷에서 비슷한 문제가 있었기 때문에이 질문에 대한 답을 찾아 보았습니다. "echo_Me"가 대답했지만 잘못된 구문이 나타납니다. localserver 위에서 그것과 함께 주변에서 놀고 난 후에, 이것은 내가했던 것이다.

if($_SESSION['usertype']) == 1 or $_SESSION['usertype']) ==2) 
//> start   end <       end < < end 
{ 
    //do stuff here for them both admin and users 
    if($_SESSION['usertype'] == 2) 
    { 
     //Do other stuff for usertype 2 
    } 
    } 

더 많은 괄호가 있습니다. 내 웹 사이트의 로그인 스크립트를 실행할 때 필요한 모든 세션 변수를 설정했습니다. 내가 세션 변수를 필요로하는 경우 그래서, 여기에 내가 그것을 처리 할 방법입니다

if($_SESSION['user']['usertype'] == 1 OR $_SESSION['user']['usertype'] == 2) { ?> 
// Do Stuff for normal user and admin 
    <?php } if($_SESSION['user']['usertype'] == 2) { ?> 
     // DO Stuff for admin only 
    <?php } ?> 

당신이 볼 수 있듯이, 첫 번째 문은 괄호 한 세트가있는 경우. 그리고 정말로, 당신은 PHP 코드 중 일부를 제거 할 수 있으며, 그냥 정기적으로 html/CSS 마크 업을하고 다음에 usertype이 2 인 if 문을 admin에 대한 내용으로 사용합니다.

<!-- HTML Markup for both Admin and Regular Users Goes Here above if statement --> 
<?php if($_SESSION['user']['usertype'] == 2 { ?> 
    // Markup for Admin only 
<?php } ?> 

또한 세션 변수에 암호가 설정되어 있지 않은 것이 좋습니다. 이 코드에서는, 그렇게하지 않았을 수도 있습니다. 나는 PDO를 사용할 때 mysqli에 익숙하지 않습니다.

관련 문제