Измените язык сайта с помощью кнопки html
В PHP я хочу изменить язык (английский, немецкий и т.д.) сайта при нажатии кнопки. Правильно ли это подходить к этой проблеме?
<?php
$language;
if ($language == "en") {
include("headerEn.php");
} else {
include("header.php");
}
?>
<a href="index.php"><?php $language = "en"; ?>
<img src="images/language/languageNO.png"></a>
<a href="index.php"><?php $language = "no"; ?>
<img src="images/language/languageEN.png"></a>
Каков наилучший способ изменить язык сайта и сохранить его при возвращении пользователя?
6 answers
Вы можете сделать это с помощью
<a href="index.php?language=en">
<a href="index.php?language=no">
И получите языки и сохраните их в файле cookie и включите файл в соответствии с файлом cookie, таким как
if ( !empty($_GET['language']) ) {
$_COOKIE['language'] = $_GET['language'] === 'en' ? 'en' : 'nl';
} else {
$_COOKIE['language'] = 'nl';
}
setcookie('language', $_COOKIE['language']);
И чем
if ( $_COOKIE['language'] == "en") {
include("headerEn.php");
} else {
include("header.php");
} ?>
Всегда полезно иметь значение по умолчанию, чтобы вы никогда не оказались на сайте без языка.
$language = $_REQUEST["language"];
$default_header="myheaderXXX.php";
switch ($language) {
case "en":
include("headerEn.php");
break;
case "no":
include("header.php");
break;
default:
include($default_header);
}
А затем создайте ссылки следующим образом:
<a href="index.php?language=en">
<a href="index.php?language=no">
Чтобы дать решение, не меняя своего подхода, вы можете сделать вот так.
<?php
if(isset($_GET['language']))
$language = $_GET['language'];
else
$language = "";
if ($language == "en") {
include("headerEn.php");
} else {
include("header.php");
} ?>
<a href="index.php?language = en"><img src="images/language/languageNO.png"> </a>
<a href="index.php?language = no"><img src="images/language/languageEN.png"></a>
Если вы хотите сохранить выбор, вы можете сохранить это значение в базе данных или сеансе.
Вы не можете изменить переменную в PHP с помощью html. PHP ориентирован на сервер, HTML ориентирован на клиента
Вы можете использовать ПОЛУЧИТЬ переменные , чтобы изменить его. Это самый простой способ сделать это.
Вы можете реализовать такой же код, как этот. Я отредактировал ваш код.
<?php
$language; ?>
<?php if ($language == "en") : ?>
<?php include("headerEn.php"); ?>
<a href="index.php"><?php $language = "en"; ?><img src="images/language/languageNO.png"></a>
<?php else: ?>
<?php include("header.php"); ?>
<a href="index.php"><?php $language = "no"; ?><img src="images/language/languageEN.png"></a>
<?php endif; ?>
Это решит вашу проблему.
Попробуйте сохранить это значение $language
в переменной сеанса . При перезагрузке страницы проверьте, установлена ли переменная сеанса или нет.
Если установлено, используйте это $language
ПРИМЕЧАНИЕ:
$language = $_GET['language'];