2015-07-15 3 views
0

То, что я пытаюсь сделать, это сделать функцию, которая получает уровень разрешений пользователя, как показано здесь.Получить данные прав пользователя (PDO)

function userPermission($level, $conn){ 
    try{ 
     $sql = "SELECT * FROM `users` WHERE username = :Player AND level = :Level "; 
     $s = $conn->prepare($sql); 
     $s->bindValue(":Player", $_SESSION['username']); 
     $s->bindValue(":Level", $level); 
     $s->execute(); 
     return true; 
    } catch(PDOException $e) { 
      error_log("PDOException: " . $e->getMessage()); 
      return false; 
     } 

} 

и как только я перехожу на страницу и вводим код, который должен встроить функциональность этой функции. Это не работает вообще.

Вот код, который я введенный

<?php if (!userPermission('0', $conn) == 2) { 
     echo '<input type="radio" id="tab-7" name="tab-group-1"> 
     <label for="tab-7">Permissions</label>'; 
    } else { 
     echo '<input disabled=disabled type="radio" id="tab-7" name="tab-group-1"> 
     <label id="disabled" for="tab-7">Permissions</label>'; 
    } 
    ?> 

0 является текущий уровень пользователя, и я использовал это как испытание, как для == 3 вот что ранг должен быть для того, чтобы доступ к вкладке

В любом случае, я либо делаю это неправильно, либо я не знаю, что делаю. Я не получаю никаких ошибок, но код, введенный мной, кажется ненадежным.

+0

Есть ли ошибка в журнале? И 'SELECT? ОТ 'какой у вас выбор? –

+0

Нет, у меня не было никаких ошибок, а для 'SELECT? FROM', который должен быть астерикой. Я просто получаю имя пользователя и уровень. –

+0

Вы возвращаете логическое значение, но проверяете, равно ли оно 2? Также вы делаете выбор, но ничего не делаете с результатом. – Anonymous

ответ

0

Ваш код просто выполняется, но не возвращает результат запроса. Я изменил код немного в качестве примера

function userPermission($username,$level, $conn){ 
    try{ 
     $sql = "SELECT `user_permission` 
       FROM `users` 
       WHERE username = :username AND level = :Level "; 
     $s = $conn->prepare($sql); 
     $s->bindValue(":username", $username); 
     $s->bindValue(":level", $level); 
     $s->execute(); 
     $row = $s->fetch(); 
     return $row['user_permission']; 
    } catch(PDOException $e) { 
      error_log("PDOException: " . $e->getMessage()); 
      return -1; 
     } 
} 

Убедитесь, что сессия установлена ​​также

session_start(); 
$usermame = $_SESSION['username']; 
if (!userPermission($username,'0', $conn) == 2) {... 
+0

У меня сеанс обрабатывается в другом файле, поэтому мне не нужно его помещать в каждый файл. Кроме того, я пытаюсь получить 'level' not user_permission, поскольку у меня нет этого столбца. –

+0

@ RyanFuhrman, как я сказал, это был пример, я надеюсь, что вы достаточно умны, чтобы настроить его – meda

+0

Спасибо! Я сделал другой метод, который использовал внутреннее соединение с таблицами, но спасибо за пример. –

Смежные вопросы