2016-10-06 9 views
-1

MySQLのテーブルから管理者であるかどうかを確認したい。行「ステータス」には1または0があります。これは0より大きく、管理者です。PHP isUserAdmin関数

PHP:

<?php 
    if($db->isUserAdmin() === TRUE) { 
     echo 'Admin'; 
    } else{ 
     echo 'Noadmin'; 
    } 
?> 

MySQLiを:

function isUserAdmin() { 

    $stmt = self::$_db->prepare("SELECT Status FROM users WHERE Session=:sid"); 
    $stmt->bindParam(":sid", session_id()); 
    $stmt->execute(); 

    if($stmt->rowCount() < 1) { 
     return true; 
    } else { 
     return false; 
    } 
} 
+0

これは機能しませんか?それを見ると、論理が間違っているようです。 'if($ stmt-> rowCount()> = 1){' –

+1

あなたが使用しているコードはmysqliではなくPDOです。さらに、コードには多くの論理エラーがあります。 –

答えて

0

ちょうどスタックオーバーフロー

の偉大な人々を教育するという余分なチェックを追加する必要が

function isUserAdmin() 
{ 
    $stmt = self::$_db->prepare("SELECT Status FROM users WHERE Session=?"); 
    $stmt->execute([session_id()]); 
    return $stmt->fetchColumn(); // here is what you really need 
} 

if($db->isUserAdmin()) { 
    echo 'Admin'; 
} else{ 
    echo 'Noadmin'; 
} 
0

あなたは、クエリではなく、状況の値によって返される行の数をチェックしています。

adminまたはuserで、セッションがある場合は、usersテーブルにエントリがあるため、常にtrueを返します。ユーザーが存在しない場合、常にfalseが返されます。あなたは、SQLによって返されたデータをチェックし、Status > 0

の値をかどうかを確認するか、SQLを変更して、そこにStatus > 0