35867-vm/update_user.php
Flatlogic Bot 6d48e88ec8 V1.0
2025-11-20 11:10:15 +00:00

74 lines
2.2 KiB
PHP

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header('Location: index.php');
exit;
}
require_once 'db/config.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$id = $_POST['id'] ?? null;
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';
$password = $_POST['password'] ?? '';
$role = $_POST['role'] ?? '';
$errors = [];
if (empty($name)) {
$errors['name'] = 'Name is required.';
}
if (empty($email)) {
$errors['email'] = 'Email is required.';
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors['email'] = 'Invalid email format.';
} else {
try {
$pdo = db();
$stmt = $pdo->prepare("SELECT id FROM users WHERE email = ? AND id != ?");
$stmt->execute([$email, $id]);
if ($stmt->fetch()) {
$errors['email'] = 'Email already exists.';
}
} catch (PDOException $e) {
$errors['db'] = "Database error: " . $e->getMessage();
}
}
if (!empty($password) && strlen($password) < 8) {
$errors['password'] = 'Password must be at least 8 characters long.';
}
if (empty($errors)) {
try {
$pdo = db();
if ($password) {
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$sql = "UPDATE users SET name = ?, email = ?, password = ?, role = ? WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$name, $email, $hashed_password, $role, $id]);
} else {
$sql = "UPDATE users SET name = ?, email = ?, role = ? WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$name, $email, $role, $id]);
}
$_SESSION['success_message'] = 'User updated successfully.';
header("Location: users.php");
exit;
} catch (PDOException $e) {
$errors['db'] = "Database error: " . $e->getMessage();
}
}
$_SESSION['errors'] = $errors;
$_SESSION['old_input'] = $_POST;
header("Location: edit_user.php?id=" . $id);
exit;
}
header("Location: users.php");
exit;