Exercise : Regex validation (by Morgan Doocy)

Adapt the solution to Exercise 1 (Buggy HTML Form) to create a PHP script with form validation.

Exercise : Regex validation, continued

Exercise solution

<?php
	$valid = true;
	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
		$patterns = array(
			'uwnetid' => '/^[a-z_\-]{8}$/i',
			'year' => '/^frosh|soph|junior|senior$/',
			'studentid' => '/^\d{7}$/',
			'essay' => '/^[a-z0-9]+([^a-z0-9]+[a-z0-9]+){449,549}$/'
		);
		foreach ($patterns as $param => $pattern) {
			if (!isset($_POST[$param]) || !preg_match($pattern, $_POST[$param])) {
				$valid = false;
				break;
			}
		}
	}
?>

Exercise solution, continued

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Essay Submission</title>
	</head>
	<body>
		<?php if ($_SERVER['REQUEST_METHOD'] == 'GET') { ?>
			<form action="" method="post">
				<!-- (form controls here) -->
			</form>
		<?php } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { ?>
			<?php if (!$valid) { ?>
				<p>ERROR: You submitted an invalid value.</p>
			<?php } else { ?>
				<p>Thank you for your submission, <?= $_POST['uwnetid'] ?>!</p>
			<?php } ?>
		<?php } ?>
	</body>
</html>