Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
<?php
/**
* API Endpoint: User Registration
* POST parameters:
* - username: Unique username
* - email: Email address
* - password: Plain text password (will be hashed)
* - full_name: (optional) Full name
*/
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');
require_once 'config.php';
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(200);
exit();
}
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['success' => false, 'error' => 'Method not allowed']);
exit();
}
try {
$input = json_decode(file_get_contents('php://input'), true);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new Exception('Invalid JSON: ' . json_last_error_msg());
}
// Validate required fields
if (!isset($input['username']) || !isset($input['email']) || !isset($input['password'])) {
throw new Exception('Username, email, and password are required');
}
$username = trim($input['username']);
$email = trim($input['email']);
$password = $input['password'];
$full_name = isset($input['full_name']) ? trim($input['full_name']) : null;
// Validation
if (strlen($username) < 3) {
throw new Exception('Username must be at least 3 characters');
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new Exception('Invalid email address');
}
if (strlen($password) < 6) {
throw new Exception('Password must be at least 6 characters');
}
$pdo = getDbConnection();
// Check if username already exists
$stmt = $pdo->prepare("SELECT user_id FROM users WHERE username = :username");
$stmt->execute([':username' => $username]);
if ($stmt->fetch()) {
throw new Exception('Username already exists');
}
// Check if email already exists
$stmt = $pdo->prepare("SELECT user_id FROM users WHERE email = :email");
$stmt->execute([':email' => $email]);
if ($stmt->fetch()) {
throw new Exception('Email already registered');
}
// Hash password
$password_hash = password_hash($password, PASSWORD_BCRYPT);
// Insert new user
$stmt = $pdo->prepare("
INSERT INTO users (username, email, password_hash, full_name)
VALUES (:username, :email, :password_hash, :full_name)
");
$stmt->execute([
':username' => $username,
':email' => $email,
':password_hash' => $password_hash,
':full_name' => $full_name
]);
$user_id = $pdo->lastInsertId();
echo json_encode([
'success' => true,
'message' => 'Registration successful',
'user' => [
'user_id' => $user_id,
'username' => $username,
'email' => $email,
'full_name' => $full_name
]
]);
} catch (Exception $e) {
http_response_code(400);
echo json_encode([
'success' => false,
'error' => $e->getMessage()
]);
}