Пример защиты паролем определенной страницы

В данном примере мы будем делать авторизацию на страницу изменения цен.

Создаем два файла - Страницу авторизации (change_price_login.php) и страницу на которую будет допуск по паролю (change_price.php).

change_price_login.php

<!doctype html>
<html lang="ru">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Редактирование цены</title>
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
</head>

<body>

<style>
.title {
	width: 1200px;
	padding: 20px;
	margin: auto;
	text-align: center;}
p.text-success {
	color: green;
	font-size: 15px;
	font-weight: 700;}
p.text-error {
	color: red;
	font-size: 15px;
	font-weight: 700;}
.form {
	width: 1200px;
	padding: 20px;
	margin: auto;}
.form label {
	font-size: 15px;
	font-weight: 700;}

@media (max-width: 1200px) {
.title {
width: 100%;}
.form {
width: 100%;}
}
</style>



<div class="title">
	<h1 class="title-text">ВВЕДИТЕ ЛОГИН И ПАРОЛЬ</h1>
</div>



<div class="form">
	<form action="/change_price.php" method="post">

	<div class="mb-3">
	<label for="user_login" class="form-label">ЛОГИН</label>
	<input class="form-control" id="user_login" name="user_login" type="text">
	</div>

	<div class="mb-3">
	<label for="user_password" class="form-label">ПАРОЛЬ</label>
	<input class="form-control" id="user_password" name="user_password" type="password">
	</div>

	<button type="submit" class="btn btn-primary">ВОЙТИ</button>
	</form>
</div>







</body>
</html>

change_price.php

<!doctype html>
<html lang="ru">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Редактирование цены</title>
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
</head>

<body>

<style>
.title {
	width: 1200px;
	padding: 20px;
	margin: auto;
	text-align: center;}
p.text-success {
	color: green;
	font-size: 15px;
	font-weight: 700;}
p.text-error {
	color: red;
	font-size: 15px;
	font-weight: 700;}
.form {
	width: 1200px;
	padding: 20px;
	margin: auto;}
.form label {
	font-size: 15px;
	font-weight: 700;}

@media (max-width: 1200px) {
.title {
width: 100%;}
.form {
width: 100%;}
}
</style>



<?php
$user_login = !empty($_POST['user_login'])?$_POST['user_login']:NULL;  
$user_password = !empty($_POST['user_password'])?$_POST['user_password']:NULL;

$login = 'asd';  
$password = 'zxc';

if($login === $user_login && $password === $user_password) {
?>

<?php
$db_host='localhost';
$db_name='db_name';
$db_user='db_user';
$db_pass='db_pass';
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
$mysqli->set_charset("utf8mb4");

if (isset($_POST['gold'])) {
	$success = '<p class="text-success">Обновление цен прошло успешно!</p>';
	if (($_POST['gold']) <= 0 || ($_POST['silver']) <= 0 || ($_POST['platinum']) <= 0 || ($_POST['palladium']) <= 0) {
		$success = '<p class="text-error">Обновление цен не прошло,<br> в одном из полей было обноруженно нулевое или отрицательное значение!</p>';
	} else {
		$mysqli->query("UPDATE `modx_prices` SET `price` = " . $_POST['gold'] . " WHERE `modx_prices`.`id` = 1");
		$mysqli->query("UPDATE `modx_prices` SET `price` = " . $_POST['silver'] . " WHERE `modx_prices`.`id` = 2");
		$mysqli->query("UPDATE `modx_prices` SET `price` = " . $_POST['platinum'] . " WHERE `modx_prices`.`id` = 3");
		$mysqli->query("UPDATE `modx_prices` SET `price` = " . $_POST['palladium'] . " WHERE `modx_prices`.`id` = 4");
	}
}
?>



<div class="title">
	<h1 class="title-text">СТРАНИЦА РЕДАКТРОВАНИЯ ЦЕН</h1>
	<?php echo $success ?>
</div>



<?php
$result = $mysqli->query('SELECT * FROM `modx_prices`');
$i = 0;
while($row = $result->fetch_assoc())
{
    $prices[$i]['id'] = $row['id'];
    $prices[$i]['name'] = $row['name'];
    $prices[$i]['price'] = $row['price'];
    $i++;
}
//echo '<pre>'; print_r($prices); echo '</pre>';
//echo $prices[0]['price'] . '<br>';
?>



<div class="form">
	<form action="" method="post">

	<div class="mb-3">
	<label for="gold" class="form-label">Золото</label>
	<input type="number" oninput="this.value = Math.round(this.value);" class="form-control" id="gold" name="gold" value="<?php echo round($prices[0]['price']) ?>">
	</div>

	<div class="mb-3">
	<label for="silver" class="form-label">Серебро</label>
	<input type="number" oninput="this.value = Math.round(this.value);" class="form-control" id="silver" name="silver" value="<?php echo round($prices[1]['price']) ?>">
	</div>

	<div class="mb-3">
	<label for="platinum" class="form-label">Платина</label>
	<input type="number" oninput="this.value = Math.round(this.value);" class="form-control" id="platinum" name="platinum" value="<?php echo round($prices[2]['price']) ?>">
	</div>
	
	<div class="mb-3">
	<label for="palladium" class="form-label">Палладий</label>
	<input type="number" oninput="this.value = Math.round(this.value);" class="form-control" id="palladium" name="palladium" value="<?php echo round($prices[3]['price']) ?>">
	</div>
	
	<div class="mb-3" style="display: none;">
	<label for="user_login" class="form-label">ЛОГИН</label>
	<input class="form-control" id="user_login" name="user_login" type="text" value="<?php echo $user_login ?>">
	</div>

	<div class="mb-3" style="display: none;">
	<label for="user_password" class="form-label">ПАРОЛЬ</label>
	<input class="form-control" id="user_password" name="user_password" type="password" value="<?php echo $user_password ?>">
	</div>

	<button type="submit" class="btn btn-primary">Изменить</button>
	</form>
</div>

<?php 
} else {
?>

<div class="title">
	<p class="text-error">Доступ запрещен, неверный логин или пароль!</p>
</div>

<?php    
}
?>  



</body>
</html>

 

Так же с моим портфолио можно ознакомиться на любой из представленной социальной сети, на своих страницах я публикую посты о своих работах, заданиях и целях.

Для связи со мной можно воспользоваться любой социальной сетью,
или написать на почту:

С моим резюме можно ознакомиться по ссылке:

© 2020-2024 Портфолио Юдина Александра г.Пенза. Все права защищены