2013-12-22 4 views
0

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

Ниже моя база данных

Staff_id пароль Роль

XXX XXX XXX

Моя страница Войти HTML ---> login.html Мой PHP код для входа в систему -> Login2.php

Я видел другие вопросы n решений, но я все еще не могу понять это правильно. Когда я вхожу в систему, это просто направляет меня на пустую страницу -xx/xx/Login2.php '. Что я сделал не так?

Я использую PHP 5. **.

Это мой PHP код:

// Connect to server and select databse. 
$db= new mysqli("$host", "$username", "$password"); 

//check connection 
if ($db->connect_errno) { 
printf("Connect failed: %s\n", $db->connect_error); 
exit(); 
} 

// username and password sent from form 
$staff_id=$_POST['staff_id']; 
$password=$_POST['password']; 

// To protect MySQL injection (more detail about MySQL injection) 
$staff_id = stripslashes($staff_id); 
$password = stripslashes($password); 
$staff_id = mysql_real_escape_string($staff_id); 
$password = mysql_real_escape_string($password); 

$sql="SELECT ROLE FROM $tbl_name WHERE STAFF_ID=$staff_id and PASSWORD='$password'"; 

$rslt= $db -> query($sql); 

// Mysql_num_row is counting table row 
$count= $db -> affected_rows; 

// If result matched $myusername and $mypassword, table row must be 1 row 

if($count==1){ 

$row = mysqli_fetch_array($rslt, MYSQLI_ASSOC); 


switch($row["ROLE"]) 
{ 
     case 'ADMIN': 
     header("location: /test/HTMLPages/Admin-register.html"); 
     break; 

    case 'MANAGER': 
    header("location: /test/HTMLPages/View-report.html"); 
    break; 

    default: 
    echo "Wrong staff ID or password"; 
} 
} 
?> 

Знайте, что я беру другой код и исправить его, как логически, как я могу.

EDIT: Исправлено. конечно, это никуда не исчезло, потому что я не указал имя базы данных. : D

поблагодарить у ур времени: D

+0

Вы уверены, что получаете ожидаемый результат от sql? Вы можете попробовать 'print_r ($ row);' перед вашим коммутатором, чтобы узнать, что у вас есть. –

ответ

0

вы выбираете роль, но как вы Сайед вы написали роль в БД, вам нужно написать так же, как написал atrr в таблице, и как Фред Сайед в комментариях, он идет так же, как в $ строки [ «Role»]

switch($row["Role"]){ 

} 
$sql="SELECT Role FROM {$tbl_name} WHERE STAFF_ID={$staff_id} and PASSWORD={$password}"; 

я не знаю, если вы не включены $ tbl_name, но из кода выше, кажется, как у вас нет переменной $ tbl_name

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