2016-11-09 2 views
0

Я создал логин с несколькими пользователями. Я подключил базу данных phpMyAdmin, и один пользовательский логин работает правильно. с кодом login.php он не перенаправляется на предполагаемую страницу.dbconnect.php.php перенаправить несколько пользователей на несколько страниц после входа в систему

login.php

<?php 

require('dbconnect.php'); 

if(isset($_POST['uname']) && isset($_POST['pw'])){ 

    $email=$_POST['uname']; 
    $pw=$_POST['pw']; 

if ($stmt = mysql_query("SELECT role FROM register WHERE 'email'= ? and 'pw'= ? ")) { 
    /* bind parameters for username and password */ 
    $stmt->bind_param('ss', $email, $pw); 


    /* execute query */ 
    $stmt->execute(); 

    // If result matched $myusername and $mypassword, table row must be 1 row 
    if ($stmt->affected_rows == 1) { 
     // bind the result to a variable 
     $stmt->bind_result($role); 
     $stmt->fetch(); 


     switch($role){ 

      case 'admin': 
       header("location:admin.php"); 
       exit(); 

      case 'trackcoordinator': 
       header("location:trackco.php"); 
       exit(); 

      case 'reviewer': 
       header("location:reviewer.php"); 
       exit(); 

      case 'author': 
       header("location:sub.php"); 
       exit(); 

      default: 
       echo "Wrong Username or Password"; 
     } 

    } 

    $stmt->close(); 
} 
} 

//$db->close(); 

?> 

Это таблица регистров. И данные выборки из этого один для процесса входа в систему:

enter image description here

+0

Правильность ввода данных? и похоже, что вы сохраняете свои пароли в текстовом виде. и Dont использовать mysql использовать mysqli или PDO –

+0

данные для входа верны. когда этот код работает, нет никакой ошибки msr. он перезагружает ту же страницу, что и пустой – clay

+0

echo $ role, что вы получаете? –

ответ

0

Попробуйте заменить exit() с break(), также я заметил, что вы используете = вместо == в if() заявлении. Попробуйте изменить это тоже.

EDIT: Другим, лучшим способом переназначения нескольких пользователей является наличие дополнительного столбца в таблице базы данных, называемого access_level (или что-то в этом роде), с значениями int, такими как 1,2,3 ... и затем проверка уровня доступа текущего пользователя и перенаправление на разные URL-адреса в зависимости от уровня доступа пользователя

1

Как отметил @Mikey, вы смешиваете mysql_query с подготовкой и привязкой к mysqli. И вы также злоупотребляете кавычками в запросе.

давайте предположим, что ваш dbconnect.php выглядит следующим образом

<?php 
$db= new mysqli('localhost', 'my_user', 'my_password', 'world'); 
?> 

тогда ваш login.php линии 10 (если заявление) должно быть как

if ($stmt = $db->prepare("SELECT role FROM register WHERE email = ? and pw = ? ")) { // You can either use backquotes (`email`) or no quotes 

Тогда вы должны быть в порядке.

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