Перевожу сайт на мультиязычность. При загрузке страницы инклудится базовая структура html и код if (!isset($_GET['lang'])){ $_GET['lang'] = 'ua'; }
, но при этом ссылка не меняется. Как сделать так, чтобы при загрузке страницы к ссылке добавлялись значения из $_GET? JS приветствуется.
Замените это:
if (!isset($_GET['lang'])){ $_GET['lang'] = 'ua'; }
Вот так:
if ( ! isset( $_GET['lang'] ) ) {
if ( ! isset( $_GET ) ) {
header( 'Location: ' . $_SERVER['REQUEST_URI'] . '?lang=ua' );
} else {
header( 'Location: ' . $_SERVER['REQUEST_URI'] . '&lang=ua' );
}
}
И получите желаемое.
$_GET
- это переменная которая берется из url страницы. Например в https://adudnik.ru/index.php?test=1
указана $_GET['test']
со значением 1
В вашем же случае нужно указать $_GET['lang']
значение ua
. Для этого мы делаем редирект пользователя на текущий URL и добавляем к нему ?lang=ua
. По сути перезагружаем страницу с этим параметром.
Однако нам нужно дополнительно проверить есть ли другие $_GET переменные. Если их нет - добавляем ?
, если есть - &
$_SERVER['REQUEST_URI']
указывает текущий URL, чтобы пользователь остался на этой странице, а не был выброшен на главную.
Обратите внимание, если вы будете использовать $_GET
для проверки языка, то у пользователя всё время должен быть lang параметр в юрле. Это очень неудобно. Чтобы этого избежать - используйте куки или сессию.
<?php
if ( isset( $_GET['lang'] ) ) {
if ( $_GET['lang'] != $_COOKIE['lang'] ) {
setcookie( "lang", $_GET['lang'] );
header( 'Location: ' . $_SERVER["REQUEST_URI"] );
}
}
if ( ! isset( $_COOKIE['lang'] ) ) {
setcookie( "lang", "ua" );
header( 'Location: ' . $_SERVER["REQUEST_URI"] );
}
Обратите внимание - куки требуют передачи себя в самом начале запроса. До вывода <html>
или других параметров header, потому этот код должен стоять в самом начале файла.
В случае с куки - вы должны в дальнейшем получать значение языка для своего кода из переменной $_COOKIE['lang']
а не из $_GET['lang']
(т.к. весь смысл этой реализации сводится к тому, чтобы убрать из url значение языка)
Чтобы сменить язык - просто направьте пользователя на нужный ?lang=язык
Файл для тестирования кода на моём сайте: https://adudnik.ru/lang_example.php?lang=ru
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пытаюсь хранить ссылки на экземпляры Test в map из stl c++, но компилятор ругается
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме
Я хочу отправить данные через USB на ArduinoСам микроконтроллер запрограммирован ждать сигнал с serial-порта
Есть ли сайт где указаны все расшифровки названий для C++ (например как расшифровывается cout = console output; endl = end line; iostream = input output stream и тд