<?php
session_start();
require_once '../config/database.php';
// Check if user is logged in and is admin
if (!isset($_SESSION['user_id']) || ($_SESSION['role'] !== 'admin' && $_SESSION['role'] !== 'director')) {
header('Location: login.php');
exit();
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = trim($_POST['username'] ?? '');
$email = trim($_POST['email'] ?? '');
$password = $_POST['password'] ?? '';
$first_name = trim($_POST['first_name'] ?? '');
$last_name = trim($_POST['last_name'] ?? '');
$errors = [];
// Validate username
if (empty($username)) {
$errors[] = "Username is required";
} elseif (strlen($username) < 3) {
$errors[] = "Username must be at least 3 characters long";
} elseif (!preg_match('/^[a-zA-Z0-9_]+$/', $username)) {
$errors[] = "Username can only contain letters, numbers, and underscores";
}
// Validate email
if (empty($email)) {
$errors[] = "Email is required";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "Invalid email format";
}
// Validate password
if (empty($password)) {
$errors[] = "Password is required";
} elseif (strlen($password) < 6) {
$errors[] = "Password must be at least 6 characters long";
}
// Check if username exists
if (empty($errors)) {
$stmt = $conn->prepare("SELECT id FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
if ($stmt->get_result()->num_rows > 0) {
$errors[] = "Username already exists";
}
}
// Check if email exists
if (empty($errors)) {
$stmt = $conn->prepare("SELECT id FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
if ($stmt->get_result()->num_rows > 0) {
$errors[] = "Email already exists";
}
}
if (empty($errors)) {
// Hash password
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// Insert new student
$stmt = $conn->prepare("
INSERT INTO users (username, email, password, first_name, last_name, role, status, created_at)
VALUES (?, ?, ?, ?, ?, 'student', 'active', NOW())
");
$stmt->bind_param("sssss", $username, $email, $hashed_password, $first_name, $last_name);
if ($stmt->execute()) {
$_SESSION['success_message'] = "Student added successfully";
} else {
$_SESSION['error_message'] = "Error adding student: " . $conn->error;
}
} else {
$_SESSION['error_message'] = implode("<br>", $errors);
}
}
header('Location: students.php');
exit();