首页 > 解决方案 > 如果选择其他语言,如何从 url 中删除或隐藏 ?lang=

问题描述

我有一个语言选择器脚本。代码如下所示:

索引.php

<?php

session_start();

$allowed_lang = array('en','de');

if (isset($_GET['lang']) === true && in_array($_GET['lang'], $allowed_lang) === true) {
    $_SESSION['lang'] = $_GET['lang'];
} else if (isset($_SESSION['lang']) === false) {
    $_SESSION['lang'] = 'en';
}

include ''. $_SESSION['lang'] .'.php';

echo $lang['hello'] , '!';

?>
<ul>
    <li><a href="?lang=en">English</a></li>
    <li><a href="?lang=de">Deutsch</a></li>
</ul>

en.php

<?php

$lang = array(
    'hello' => 'Hello',
);

?>

de.php

<?php

$lang = array(
    'hello' => 'Hallo',
);

?>

默认语言当然是英语,如果我选择另一种语言(例如德语),那么在语言更改后 url 是index.php?lang=de. 切换到英文后,网址是index.php?lang=en.

如何从 URL 中删除或隐藏?lang=en?lang=de,所以如果我单击“deutsch”链接,语言将切换但不会将任何内容附加到当前 URL(例如index.php)?

预先感谢您的回答!

标签: php

解决方案


您可以使用参数,而不是使用GET参数进行语言选择POST。因此,您必须使语言选择器 aform调用文档本身(即没有action属性,但带有)method="post"并将语言选择作为POST变量发送和接收,即不可见。

之后(即用户切换到的以下页面),您可以使用会话变量、cookie 或本地存储来保存和调用所选语言。


推荐阅读