- setcookie: documentation ( source)
- define: documentation ( source)
- printf: documentation ( source)
<?php
define('FIELDS', ['name', 'address', 'city']);
define(
'HTML_FIELD_FORM',
<<<'HTML'
<h2>%1$s</h2>
<form method="post" autocomplete="off">
<input type="text" name="%1$s" autocomplete="off" placeholder="%1$s"><br>
<input value="submit" type="submit">
</form>
HTML
);
define(
'HTML_CLEAR_FORM',
<<<'HTML'
<form method="post" autocomplete="off">
<input type="text" name="%1$s" value="1" hidden><br>
<input value="%1$s" type="submit">
</form>
HTML
);
foreach (FIELDS as $field) {
if (isset($_POST[$field])) {
// Set session & cookie from post
$_SESSION[$field] = $_POST[$field];
setcookie($field, $_POST[$field]);
} elseif (isset($_COOKIE[$field])) {
// Set session from cookie
$_SESSION[$field] = $_COOKIE[$field];
} elseif (!isset($_SESSION[$field])) {
// Present individual field form
printf(HTML_FIELD_FORM, $field);
}
}
foreach (['clear_session', 'clear_cookies'] as $action) {
printf(HTML_CLEAR_FORM, $action);
}