Есть страничка авторизации и база данных.
В Базе соответственно все как полагается: id, log, pass, role
.
Как сделать, чтобы при авторизации, если у логина условная роль Х
То редирект на 1 страницу (условный админ), если у него будет роль Y
(просто пользователь) - то редирект на другую страницу.
<?php
// Страница авторизации
// Функция для генерации случайной строки
function generateCode($length=6) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
$code = "";
$clen = strlen($chars) - 1;
while (strlen($code) < $length) {
$code .= $chars[mt_rand(0,$clen)];
}
return $code;
}
// Соединямся с БД
$link=mysqli_connect("localhost", "root", "", "usersdb");
$message;
if(isset($_POST['submit']))
{
// Вытаскиваем из БД запись, у которой логин равняеться введенному
$query = mysqli_query($link,"SELECT user_id, user_password, user_role FROM users WHERE user_login='".mysqli_real_escape_string($link,$_POST['login'])."' LIMIT 1");
$data = mysqli_fetch_assoc($query);
// Сравниваем пароли
if($data['user_password'] === md5(md5($_POST['password'])))
{
// Генерируем случайное число и шифруем его
$hash = md5(generateCode(10));
// Записываем в БД новый хеш авторизации и IP
mysqli_query($link, "UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'");
// Ставим куки
setcookie("id", $data['user_id'], time()+60*60*24*30,"/");
setcookie("hash", $hash, time()+60*60*24*30,"/"); // httponly !!!
// Переадресовываем браузер на страницу проверки нашего скрипта
header("Location: algoritm.php"); exit();
}
else
{
print "Вы ввели неправильный логин/пароль";
}
}
?>
Вынесите принятие решения о редиректе в отдельную функцию/класс/метод.
Как пример:
function getRedirectUri($role) {
switch ($role) {
case 'admin': return '/admin/dashboard';
case 'moder': return '/admin/modertools';
case 'user': return '/feed';
default: return '/';
}
}
// ... //
$redirectUri = getRedirectUri($data['role']);
if ($redirectUri) {
header("Location: $redirectUri");
exit;
}
// ... //
Конкретные текстовые значения ролей лучше сделать константами класса(например, User).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
нужна помощь знатока prestashopВозможно есть где то информация или кто то может помочь, в том как можно вывести в письме (в котором выводиться...
Подскажите, как выполнить какой-то код, допустим, ровно в 18:00?