第一个问题
我有一个动态网站,页面以下列方式动态地包含在索引页面中:
$page = (empty($_GET["page"])) ? "home" : $_GET["page"];
$page = "folder/".basename($page).".php";
if (is_readable($page)) {
include($page);
} else {
echo 'Site doesn't exist!';
exit;
}
但是还有一个语言菜单,用另一个$ _GET参数更改语言:
<form name="switch" id="lang" action="" method="get">
<select name="multilingual" onchange="this.form.submit()">
<option value="lang_it">Italian</option>
<option value="lang_de" >German</option>
<option value="lang_en">English</option>
</select>
</form>
if(!isset ($_COOKIE['multilingual'])){
$lingua = null;
}else{
$lingua = $_COOKIE['multilingual'];
}
if(isset($_GET['multilingual'])){
$lingua = $_GET['multilingual'];
$_SESSION['multilingual'] = $lingua;
setcookie('multilingual', $lingua, time() + (3600 * 24 * 30));
}
switch($lingua){
case 'lang_it': include_once('file_it.php'); break;
case 'lang_de': include_once('file_de.php'); break;
case 'lang_en': include_once('file_en.php'); break;
default: include_once('file_it.php'); break;
}
第二个$ _GET参数传递给URL,但在页面上它会将我总是重定向到默认主页。
如何在不重定向到主页的情况下更改语言? 换句话说,要更改语言并保持在同一页面上吗?
第二个问题
是否可以更改URL中的lang_it,lang_de,lang_en参数以重定向到页面的当前语言。 如果发生这种情况,如何在页面更改为其他语言时更改语言切换器?
答案 0 :(得分:1)
<form name="switch" id="lang" action="<?php echo $page; ?>" method="get">
<select name="multilingual" onchange="this.form.submit()">
<option value="lang_it" <?php if($_COOKIE['multilingual']=='lang_it') echo "selected='selected'" ?>>Italian</option>
<option value="lang_de" <?php if($_COOKIE['multilingual']=='lang_de') echo "selected='selected'" ?>>German</option>
<option value="lang_en"<?php if($_COOKIE['multilingual']=='lang_en') echo "selected='selected'" ?>>English</option>
</select>
</form>
答案 1 :(得分:0)
this.form.submit()无法在没有页面刷新/重定向的情况下工作。
如果我理解你的问题:
您需要开始使用单页JS框架
或通过(再次)JS(通过json config populate / change / mutate DOM内容加载laguage vars)在后台动态加载语言变量
修改强>
忘了提及:小心你的“动态”网站。你这样做的方式非常不安全,安全明智。
修改强>
尝试更改表单action
attibute。放在当前文件名
修改强> 更安全的方法是使一个数组具有实际存在且安全的页面,并在表单提交后检查针对该数组的$ _GET参数