36525-vm/lib.php
Flatlogic Bot 232ed5c114 V3
2025-12-01 09:10:54 +00:00

78 lines
1.7 KiB
PHP

<?php
function load_env($path)
{
$vars = [];
if (!file_exists($path)) {
return $vars;
}
$lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
if (strpos(trim($line), '#') === 0) {
continue;
}
list($name, $value) = explode('=', $line, 2);
$name = trim($name);
$value = trim($value);
$vars[$name] = $value;
}
return $vars;
}
function login(string $username, string $password): bool
{
$pdo = db();
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$username]);
$user = $stmt->fetch();
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
return true;
}
return false;
}
function logout(): void
{
$_SESSION = [];
session_destroy();
}
function is_logged_in(): bool
{
return isset($_SESSION['user_id']);
}
function require_login(): void
{
if (!is_logged_in()) {
header('Location: /admin/login.php');
exit;
}
}
function register(string $name, string $username, string $email, string $password): int|false
{
$pdo = db();
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$stmt = $pdo->prepare("INSERT INTO users (name, username, email, password) VALUES (?, ?, ?, ?)");
try {
$stmt->execute([$name, $username, $email, $hashed_password]);
return (int)$pdo->lastInsertId();
} catch (PDOException $e) {
// 1062 is the error code for duplicate entry
if ($e->errorInfo[1] == 1062) {
return false;
}
throw $e;
}
}