/* === PHP CODE === */
PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false
]
);
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
exit;
}
if (
empty($_POST['csrf_token']) ||
!hash_equals(
$_SESSION['csrf_token'],
$_POST['csrf_token']
)
) {
exit('Invalid request.');
}
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$mobile = trim($_POST['mobile'] ?? '');
$address = trim($_POST['address'] ?? '');
$errors = [];
/*
|--------------------------------------------------------------------------
| Name Validation
|--------------------------------------------------------------------------
*/
if (
empty($name) ||
mb_strlen($name) < 2 ||
mb_strlen($name) > 100
) {
$errors[] = 'Invalid name.';
}
if (
!preg_match(
"/^[a-zA-Z\s.'-]+$/u",
$name
)
) {
$errors[] = 'Name contains invalid characters.';
}
/*
|--------------------------------------------------------------------------
| Email Validation
|--------------------------------------------------------------------------
*/
if (
!filter_var(
$email,
FILTER_VALIDATE_EMAIL
)
) {
$errors[] = 'Invalid email.';
}
$email = strtolower($email);
/*
|--------------------------------------------------------------------------
| Mobile Validation
|--------------------------------------------------------------------------
*/
if (
!preg_match(
'/^[6-9][0-9]{9}$/',
$mobile
)
) {
$errors[] = 'Invalid mobile number.';
}
/*
|--------------------------------------------------------------------------
| Address Validation
|--------------------------------------------------------------------------
*/
if (mb_strlen($address) > 500) {
$errors[] = 'Address too long.';
}
if (!empty($errors)) {
foreach ($errors as $error) {
echo htmlspecialchars($error) . '
';
}
exit;
}
/* === HTML CODE === */