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
?>