Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save exileed/4b34c3e69d0ce7d688a76456c234810d to your computer and use it in GitHub Desktop.
Save exileed/4b34c3e69d0ce7d688a76456c234810d to your computer and use it in GitHub Desktop.
<?php
require_once 'database_connection.php';
function authorize_user($groups = NULL) {
// Если не создан cookie-файл, проверять группы не нужно
if ((!isset($_COOKIE['user_id'])) || (!strlen($_COOKIE['user_id']) > 0)) {
header('Location: signin.php?' . 'error_message=Для просмотра этой страницы нужно зарегистрироваться.');
exit;
}
// Если группы не были переданы, достаточно и этой авторизации
if ((is_null($groups)) || (empty($groups))) {
return;
}
// Создание строки запроса
$query_string = "SELECT ug.user_id" .
" FROM user_groups ug, groups g" .
" WHERE g.name = '%s'" .
" AND g.id = ug.group_id" .
" AND ug.user_id = " . $link->real_escape_string($_COOKIE['user_id']);
foreach ($groups as $group) {
// SQL-поиск для текущего значения переменной $group
$query = sprintf($query_string, $link->real_escape_string($group));
$result = $link->query($query);
// Обработка результатов
if ($result->num_rows == 1) {
// Если получен результат, пользователю нужно разрешить доступ.
// Возвращение управления, чтобы продолжилось выполнение сценария.
return;
}
}
// Если мы попали сюда, значит соответствий не было ни в одной из групп.
// Доступ пользователю не разрешен.
handle_error("Вы не прошли авторизацию для просмотра данной страницы.");
exit;
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment