Добрый день, форумчане! Обращаюсь к Вам за подсказкой, т.к. сам разобраться не могу, гуглил как мог, форум читал, но так и не въехал. Задача: переключатель языка на странице (русский по умолчанию, английский второй). Сделал ссылки на переключение, написал код для самого процесса, но страничка на него никак не реагирует, выводит русский и только. На английскую версию никак не попасть. Вот код (всего 2 файла): index.php PHP: <?php require "switch.php";?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Переключатель языка на странице</title> <style type="text/css"> .lang_switch { position: absolute; top: 20px; right: 10px; } #rus { border-right: 1px solid black; padding-right: 4px; } </style> </head> <body> <div class="lang_switch"> <a id="rus" href="index.php?lang=ru">РУ</a> <a href="index.php?lang=en">ENG</a> </div> <button formaction="https://www.gosuslugi.ru"><?php echo "$gosuslugi_bttn_name";?></button> <button formaction="#"><?php echo "$sms_bttn_name";?></button> </body> </html> switch.php PHP: <?php session_start(); if (isset($_GET['lang']) && $_GET['lang']="ru") { $_SESSION['lang']=ru; } elseif (isset($_GET['lang']) && $_GET['lang']="en") { $_SESSION['lang']=en; } if ($_SESSION["lang"]=="ru") { $gosuslugi_bttn_name = "Вход через Госуслуги"; $sms_bttn_name = "Вход через SMS"; } else { $gosuslugi_bttn_name = "Enter via Gosuslugi.ru"; $sms_bttn_name = "Enter via SMS"; } ?> Помогите пожалуйста новичку, буду очень признателен. Уверен, что задача на самом деле тривиальная...
сразу вижу, в условиях $_GET['lang']="ru" стоит одинарное равно.. а это присваивание.. то есть Вы присваиваете $_GET['lang'] значение ru надо поставить двойное равно $_GET['lang'] == 'ru' а вот тут $_SESSION['lang']=ru; там где присваиваете значение, значение должно быть в кавычках $_SESSION['lang']='ru'; попробуйте..
Ух, точно, помогло, спасибо большое! --- Добавлено --- Был бы благодарен также за подсказку насчет PHP: <button formaction="https://www.gosuslugi.ru"><?php echo "$gosuslugi_bttn_name";?></button> Это неправильное описание кнопки и её formaction? Потому что у меня она не срабатывает, formaction возможен только с локально расположенными адресами?
а вообще если можно совет.. выносите текст в языковые файлы.. к примеру сделали папку language там сделали два файла russian.php и english.php в одном русские названия, в другом иностранные PHP: <?php $txt = [ 'lang' => 'язык', 'ru' => 'русский', 'en' => 'английский', 'gosuslugi_bttn_name' => 'Вход через Госуслуги', 'sms_bttn_name' => 'Вход через SMS', ]; PHP: <?php $txt = [ 'lang' => 'language', 'ru' => 'russian', 'en' => 'english', 'gosuslugi_bttn_name' => 'Enter via Gosuslugi.ru', 'sms_bttn_name' => 'Enter via SMS', ]; тогда файл index.php будет вот так выглядеть HTML: <?php require "switch.php";?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Переключатель языка на странице</title> <style type="text/css"> .lang_switch { position: absolute; top: 20px; right: 10px; } #rus { border-right: 1px solid black; padding-right: 4px; } </style> </head> <body> <div class="lang_switch"> <a id="rus" href="index.php?lang=ru">РУ</a> <a href="index.php?lang=en">ENG</a> </div> <button formaction="https://www.gosuslugi.ru"><?=$txt['gosuslugi_bttn_name'];?></button> <button formaction="#"><?=$txt['sms_bttn_name'];?></button> </body> </html> а файл switch.php вот так PHP: <?php session_start(); $load_lang = 'russian'; if(!empty($_SESSION['lang'])){ $load_lang = $_SESSION['lang']; } if (isset($_GET['lang'])) { switch($_GET['lang']){ case 'ru': $load_lang = 'russian'; break; case 'en': $load_lang = 'english'; break; } $_SESSION['lang'] = $load_lang; } require_once '/language/' . $load_lang . '.php'; --- Добавлено --- да)) этого я не заметил)) они не работают потому что нет тега form.. HTML: <form> <button formaction = "https://www.gosuslugi.ru"><?=$txt['gosuslugi_bttn_name'];?></button> <button formaction = "#"><?=$txt['sms_bttn_name'];?></button> </form>
кстати вообще по логике файл switch должен быть index.php а файл index должен быть lang.template.php и должен лежать в папке templates или view)) а уже из индекса его инклудить) как то так))