Загрузка данных
<?php
session_start();
$host = 'localhost';
$db = 'mydb';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$pdo = new PDO($dsn, $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$action = $_GET['action'] ?? '';
if ($action === 'logout') {
session_destroy();
header('Location: index.php');
exit;
}
if ($action === 'delete_user' && isset($_GET['id']) && $_SESSION['is_admin'] ?? false) {
$id = (int)$_GET['id'];
if ($id != $_SESSION['user_id']) {
$stmt = $pdo->prepare("DELETE FROM users WHERE id = ?");
$stmt->execute([$id]);
}
header('Location: index.php?action=admin');
exit;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['register'])) {
$username = $_POST['username'];
$password = md5($_POST['password']);
$is_admin = isset($_POST['is_admin']) ? 1 : 0;
try {
$stmt = $pdo->prepare("INSERT INTO users (username, password, is_admin) VALUES (?, ?, ?)");
$stmt->execute([$username, $password, $is_admin]);
$success = "Регистрация успешна, теперь войдите.";
} catch (PDOException $e) {
$error = "Пользователь уже существует.";
}
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['login'])) {
$username = $_POST['username'];
$password = md5($_POST['password']);
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->execute([$username, $password]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
$_SESSION['is_admin'] = (bool)$user['is_admin'];
header('Location: index.php');
exit;
} else {
$error = "Неверный логин или пароль.";
}
}
$calcResult = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['calc'])) {
$a = (float)$_POST['a'];
$b = (float)$_POST['b'];
$op = $_POST['op'];
switch ($op) {
case '+': $calcResult = $a + $b; break;
case '-': $calcResult = $a - $b; break;
case '*': $calcResult = $a * $b; break;
case '/': $calcResult = $b != 0 ? $a / $b : 'Ошибка: деление на 0'; break;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Калькулятор с админкой</title>
<style>
body { font-family: Arial; margin: 30px; }
.block { border: 1px solid #ccc; padding: 15px; margin-bottom: 20px; width: 350px; }
.error { color: red; }
.success { color: green; }
table { border-collapse: collapse; }
td, th { border: 1px solid #ddd; padding: 5px; }
</style>
</head>
<body>
<?php if (!isset($_SESSION['user_id'])): ?>
<div class="block">
<h3>Вход</h3>
<?php if (isset($error)) echo "<div class='error'>$error</div>"; ?>
<?php if (isset($success)) echo "<div class='success'>$success</div>"; ?>
<form method="post">
Логин: <input type="text" name="username" required><br><br>
Пароль: <input type="password" name="password" required><br><br>
<button type="submit" name="login">Войти</button>
</form>
</div>
<div class="block">
<h3>Регистрация</h3>
<form method="post">
Логин: <input type="text" name="username" required><br><br>
Пароль: <input type="password" name="password" required><br><br>
<label>
<input type="checkbox" name="is_admin"> Администратор
</label><br><br>
<button type="submit" name="register">Зарегистрироваться</button>
</form>
</div>
<?php else: ?>
<div>
Привет, <?= htmlspecialchars($_SESSION['username']) ?>
(<?= $_SESSION['is_admin'] ? 'Админ' : 'Пользователь' ?>)
<a href="?action=logout">Выйти</a>
</div>
<div class="block">
<h3>Калькулятор</h3>
<form method="post">
<input type="number" step="any" name="a" required>
<select name="op">
<option>+</option><option>-</option><option>*</option><option>/</option>
</select>
<input type="number" step="any" name="b" required>
<button type="submit" name="calc">=</button>
</form>
<?php if ($calcResult !== ''): ?>
<strong>Результат: <?= htmlspecialchars($calcResult) ?></strong>
<?php endif; ?>
</div>
<?php if ($_SESSION['is_admin']): ?>
<div class="block">
<h3>Админ-панель: управление пользователями</h3>
<table>
<tr><th>ID</th><th>Логин</th><th>Админ?</th><th>Удалить</th></tr>
<?php
$stmt = $pdo->query("SELECT id, username, is_admin FROM users ORDER BY id");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>";
echo "<td>{$row['id']}</td>";
echo "<td>" . htmlspecialchars($row['username']) . "</td>";
echo "<td>" . ($row['is_admin'] ? 'Да' : 'Нет') . "</td>";
if ($row['id'] != $_SESSION['user_id']) {
echo "<td><a href='?action=delete_user&id={$row['id']}' onclick='return confirm(\"Удалить?\")'>Удалить</a></td>";
} else {
echo "<td>—</td>";
}
echo "</tr>";
}
?>
</table>
</div>
<?php endif; ?>
<?php endif; ?>
</body>
</html>