Поэтому, будучи новичком в PHP, я пытаюсь найти способ привлечь определенных пользователей на соответствующие страницы.
Например, я хотел бы, чтобы администратор (после входа в систему) был перенаправлен на свою страницу администратора, и никто другой не должен видеть эту страницу, кроме администратора, а также преподавателя, который должен быть перенаправлен на страницу своего преподавателя, и никто больше не может видеть это но репетитор.
К сожалению, я не могу думать о том, как сделать эту работу как таковую, и я осмотрелся, чтобы увидеть другие примеры, многие из которых не имеют отношения к тому, что я ищу, поскольку большая часть относится к «разрешениям».
Вот мой код для страницы входа:
<?php
//error_reporting(0);
error_reporting(-1);
ob_start();
session_start();
//connection to the database
require 'connection.php';
if (!empty($_POST['username']) && !empty($_POST['password']))
{
//query the databse for these columns in the table users
$records = $conn->prepare('SELECT id, Username, Password, Role FROM users WHERE Username = :username');
$records->bindParam(':username', $_POST['username']);
$records->execute();
$results = $records->fetch(PDO::FETCH_ASSOC);
//var_dump($results);
// Count the results in the table if they are greater than 0
// check the hashed password on the form and the password in the db match
if((count($results) > 0) && password_verify($_POST['password'], $results['Password'])) {
//die('We have a log in');
if ($results == 'Admin'){
header('Location: adminPage.php');
} else if ($results == 'Tutor'){
header('Location: tutorPage.php');
} else {
header('Location: studentPage.php');
}
} else {
//echo $_POST['password'];
die('That user doesn\'t exist');
}
}
?>
И после попытки выполнить код, конечно же, появятся некоторые ошибки:
[:error] [pid 1797] [client 127.0.0.1:37161] PHP Parse error: syntax error, unexpected '''' (T_CONSTANT_ENCAPSED_STRING) in /apps/bla/web/login.php on line 31, referer: http://hinat.local/loginPage.php
Что я должен принимать во внимание при попытке сделать это или как проще всего это сделать?
Вам необходимо обратиться к $results['Role']
в качестве массива при тестировании роли также рекомендуется добавить exit;
после header('Location: ....);
так как команда заголовка не останавливает выполнение кода.
if((count($results) > 0) && password_verify($_POST['password'], $results['Password'])) {
//die('We have a log in');
if ($results['Role'] == 'Admin'){
header('Location: adminPage.php');
exit;
} else if ($results['Role'] == 'Tutor'){
header('Location: tutorPage.php');
exit;
} else {
header('Location: studentPage.php');
exit;
}
} else {
//echo $_POST['password'];
die('That user doesn\'t exist');
}
Других решений пока нет …