Основы PHP/Проверка авторизации пользователя — различия между версиями

Материал из База знаний Центра Чкалова
Перейти к: навигация, поиск
м
м (Скрипт для внутренней проверки авторизации пользователя)
 
(не показаны 2 промежуточные версии этого же участника)
Строка 11: Строка 11:
 
include("variables.php");
 
include("variables.php");
 
$link = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
 
$link = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
$query = "SELECT users.id, users.login, users.is_admin FROM user_hashes, users WHERE user_hashes.hash='" . $_COOKIE['entered_hash'] . "' AND user_hashes.user__id=users.id;";
+
$entered_hash = mysqli_real_escape_string($link, $_COOKIE['entered_hash']);
 +
$query = "SELECT users.id, users.login, users.is_admin FROM user_hashes, users WHERE user_hashes.hash='" . $entered_hash . "' AND user_hashes.user__id=users.id;";
 
$res = mysqli_query($link, $query);
 
$res = mysqli_query($link, $query);
 
if ($row = mysqli_fetch_array($res)) {
 
if ($row = mysqli_fetch_array($res)) {
Строка 33: Строка 34:
 
echo "user__id = " . $user__id . "<br/>";
 
echo "user__id = " . $user__id . "<br/>";
 
echo "user__login = " . $user__login . "<br/>";
 
echo "user__login = " . $user__login . "<br/>";
 +
?>
 +
</pre>
 +
 +
== Скрипт для внутренней проверки авторизации пользователя ==
 +
<pre>
 +
<?php
 +
include_once("auth_check.php");
 +
if ($is_authorised == false){
 +
header("Location: /index.php?msg=Не+авторизован!");
 +
exit;
 +
}
 +
?>
 +
</pre>
 +
 +
== Скрипт для внутренней проверки пользователя на наличие прав администратора ==
 +
<pre>
 +
<?php
 +
include_once("auth_check.php");
 +
if ($is_admin == false){
 +
header("Location: /index.php?msg=Нет прав!");
 +
exit;
 +
}
 
?>
 
?>
 
</pre>
 
</pre>

Текущая версия на 19:02, 28 ноября 2019

Проверка авторизации

Файл auth_check.php:

<?php
	$is_authorised = false;
	$user__id = "";
	$user__login = "";
	$is_admin = false;
	
	if (isset($_COOKIE['entered_hash'])){
		include("variables.php");
		$link = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
		$entered_hash = mysqli_real_escape_string($link, $_COOKIE['entered_hash']);
		$query = "SELECT users.id, users.login, users.is_admin FROM user_hashes, users WHERE user_hashes.hash='" . $entered_hash . "' AND user_hashes.user__id=users.id;";
		$res = mysqli_query($link, $query);
		if ($row = mysqli_fetch_array($res)) {
			$is_authorised = true;
			$user__id = $row['id'];
			$user__login = $row['login'];
			$is_admin = $row['is_admin'];
		}
		mysqli_close($link);
	}
?>

Файл для проверки скрипта

Файл test.php:

<?php 
	include("auth_check.php"); 
	echo "is_authorised = " . $is_authorised . "<br/>";
	echo "is_admin = " . $is_admin . "<br/>";
	echo "user__id = " . $user__id . "<br/>";
	echo "user__login = " . $user__login . "<br/>";
?>

Скрипт для внутренней проверки авторизации пользователя

<?php
	include_once("auth_check.php");
	if ($is_authorised == false){
		header("Location: /index.php?msg=Не+авторизован!");
		exit;
	}
?>

Скрипт для внутренней проверки пользователя на наличие прав администратора

<?php
	include_once("auth_check.php");
	if ($is_admin == false){
		header("Location: /index.php?msg=Нет прав!");
		exit;
	}
?>