В 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>
Каков наилучший способ изменить язык сайта и сохранить его, когда пользователь вернется?
вы можете это сделать
<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"); } ?>
вif ( $_COOKIE['language'] == "en") { include("headerEn.php"); } else { include("header.php"); } ?>
в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); }
в$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); }
в$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 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 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 – клиентский
Однако вы можете использовать переменные GET для его изменения. Это самый простой способ сделать это.
Вы можете реализовать такой же код, как это. Я изменил код.
<?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'];