Solution: Showing "Congratulations!"
Let's solve the challenge given in the previous lesson.
We'll cover the following...
Solution
Have a look at the complete implementation of the challenge below.
<?php
$availableLanguages = [
'en' => 'English',
'ger' => 'German',
'de' => 'Deutsch'
];
// Default language: en
$defaultLanguage = 'en';
$selectedLanguage = $defaultLanguage;
if (isset($_GET['language'])) {
// If the user selected a language, use it
$selectedLanguage = $_GET['language'];
} elseif (isset($_COOKIE['language'])) {
// If the language is stored as a cookie, use it
$selectedLanguage = $_COOKIE['language'];
}
// If the language doesn't actually exist, use the default language
if (!isset($availableLanguages[$selectedLanguage])) {
$selectedLanguage = $defaultLanguage;
}
setcookie('language', $selectedLanguage);
$messages = [
'en' => 'Congratulations!',
'ger' => 'Gratuliere!',
'de' => 'Gefeliciteerd!'
]
?>
<!DOCTYPE html>
<html>
<head>
<title>Congratulations</title>
</head>
<body>
<form method="get">
<p>
<label for="language">Language:</label>
<select id="language" name="language">
<?php
foreach ($availableLanguages as $key => $value) {
?>
<option value="<?php echo htmlspecialchars($key, ENT_QUOTES); ?>"
<?php if ($selectedLanguage === $key) { ?> selected<?php } ?>>
<?php echo htmlspecialchars($value, ENT_QUOTES); ?>
</option>
<?php
}
?>
</select>
</p>
<p>
<button type="submit">Submit</button>
</p>
</form>
<p class="message">
<?php echo $messages[$selectedLanguage]; ?>
</p>
</body>
</html>Explanation
Let’s break down the solution and analyze it.
public/congratulations.php file
We followed these steps to solve the challenge:
- At line 3, we created an array of available languages.
Ask