php - 如果选择其他语言,如何从 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
)?
预先感谢您的回答!
解决方案
您可以使用参数,而不是使用GET
参数进行语言选择POST
。因此,您必须使语言选择器 aform
调用文档本身(即没有action
属性,但带有)method="post"
并将语言选择作为POST
变量发送和接收,即不可见。
之后(即用户切换到的以下页面),您可以使用会话变量、cookie 或本地存储来保存和调用所选语言。
推荐阅读
- pygame - 带有pygame的Kivy mp3播放器不会停止歌曲
- java - 简化 if 语句: if (legendTitle != null && legendTitle.equals("My house"))
- reactjs - Reactjs useEffect 捕获多个 Firebase Firestore onSnapshot 事件
- mysql - 将数据插入mysql db表
- html - 标签未与其他输入或标签对齐
- sql - 具有 NodeJS 和 SQL 结果的类别和子类别
- javascript - TensorflowJS 和 Tensorflow_datasets
- python - 应用对数据框中特定列进行操作的函数
- drools - 执行目标 org.kie:kie-maven-plugin:7.44.0.Final-redhat-00003:generateModel 的 default-generateModel 失败
- xml - 从大型 xml 文件中提取 xml 并将其发送到 jmeter 中的 api 端点