2015-02-08 2 views
2

У меня есть таблица пользователей с этой структурой:Проверьте, пользователь администратор PHP

ид
имени пользователя
пароль
дилера (администратор)

Теперь я хочу, чтобы проверить на входе в системе, если пользователь дилер, дилер может хранить значение 0 (обычный пользователь) или 1 (администратор), но я не знаю, как это сделать (я новичок в PHP).

Это форма Логин:

<form action="index.php?action=login" method="post" style="width: 50%;"> 
     <input type="hidden" name="login" value="true" /> 

<?php if (isset($results['errorMessage'])) { ?> 
     <div class="errorMessage"><?php echo $results['errorMessage'] ?></div> 
<?php } ?> 

     <ul> 

      <li> 
      <label for="username">Username</label> 
      <input type="text" name="username" id="username" placeholder="Uw gebruikersnaam" required autofocus maxlength="20" /> 
      </li> 

      <li> 
      <label for="password">Password</label> 
      <input type="password" name="password" id="password" placeholder="Uw wachtwoord" required maxlength="20" /> 
      </li> 

     </ul> 

     <div class="buttons"> 
      <input type="submit" name="login" value="Login" /> 
     </div> 

     </form> 

И это функция Логин:

function login() { 

    $results = array(); 
    $results['pageTitle'] = "Admin Login | Gemeente Urk"; 

    $host = "localhost"; 
    $mysqluser = "root"; 
    $mysqlpass = "usbw"; 
    $db = "wagenpark"; 

    mysql_connect($host, $mysqluser, $mysqlpass); 
    mysql_select_db($db); 

    if (isset($_POST['login'])) { 

     $gebruiker = $_POST['username']; 
     $wachtwoord = $_POST['password']; 
     $sql = "SELECT * FROM users WHERE username='".$gebruiker."' AND password='".$wachtwoord."' LIMIT 1"; 
     $res = mysql_query($sql) or die (mysql_error()); 
     if (mysql_num_rows($res) == 1) { 
      $_SESSION['username'] = $gebruiker; 
      header("Location: index.php"); 

    } else { 

     // Login failed: display an error message to the user 
     $results['errorMessage'] = "Incorrect username or password. Please try again."; 
     require(TEMPLATE_PATH . "/admin/loginForm.php"); 
    } 

    } else { 

    // User has not posted the login form yet: display the form 
    require(TEMPLATE_PATH . "/admin/loginForm.php"); 
    } 

} 

Спасибо уже.

+0

[Ваш код уязвим для SQL-инъекции] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – PeeHaa

ответ

1

Если я правильно понимаю, у вас есть база данных MySQL, в которой вы сохраняете имя пользователя, идентификатор, пароль и если он/она является администратором. В этой части:

$res = mysql_query($sql) or die (mysql_error()); 
if (mysql_num_rows($res) == 1) { 
     $_SESSION['username'] = $gebruiker; 
     header("Location: index.php"); 

Вы можете просто получить значение администратора для результата. Было бы удобно выглядеть так:

$res = mysql_query($sql) or die (mysql_error()); 
if (mysql_num_rows($res) == 1) { 
     $_SESSION['username'] = $gebruiker; 
     while($row = mysql_fetch_object($res)) 
     { 
      $admin = $row->Admin; 
     } 
     if ($admin == 1) {Do something...} 
     else {Do something if he is not Admin} 
     header("Location: index.php"); 

И тогда вы могли бы сэкономить это на $ _SESSION.

Я надеюсь, что помогло, если это не сработает, сообщите мне.

+0

Могу ли я получить значение admin с помощью результат запроса? Я не использовал поле в запросе, но могу ли я его использовать? –

+0

Я пробовал это, и я получаю эту ошибку: Примечание: попытка получить свойство не-объекта в C: \ Users \ Rudie \ Documents \ Wagenpark \ root \ index.php в строке 55 –

+0

Ну, запрос получает все поля вашего Пользовательская строка. –

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