What are the best practices for handling language selection in a PHP script, especially when switching between languages dynamically based on user input?
When handling language selection in a PHP script, it is best to store language translations in separate files or a database. You can dynamically switch between languages based on user input by using a session variable or a query parameter. Make sure to sanitize and validate user input to prevent any security risks.
<?php
// Start session to store selected language
session_start();
// Check if user has selected a language
if(isset($_GET['lang'])) {
// Sanitize user input
$selected_lang = htmlspecialchars($_GET['lang']);
// Set the selected language in session
$_SESSION['lang'] = $selected_lang;
}
// Default language
$default_lang = 'en';
// Check if language is set in session, otherwise use default language
$selected_lang = isset($_SESSION['lang']) ? $_SESSION['lang'] : $default_lang;
// Load language file based on selected language
include 'lang/' . $selected_lang . '.php';
// Example language file (lang/en.php)
$lang = array(
'welcome' => 'Welcome',
'hello' => 'Hello'
);
// Usage example
echo $lang['welcome']; // Output: Welcome
?>