Litte有点长的解释。我为访问我的网站(双语)的人保存了一个数据库名称“visitor”:
id = 1
session = fdslup7nsop20ctlkbcf2f7016
country = singapore
language = en
基于该数据库,我可以使用语言(en)作为会话以英文版本呈现我的网站。
在我的index.php中,我使用这个脚本并且它可以工作:
$locallang=$pages->SelectLocalLanguage(); // pointed to $page class
$_SESSION['mylang'] =$locallang;
if ($_SESSION['mylang']=='en' {
// show in english
}else{
// show in other language
}
$ page class中的:
public function SelectLocalLanguage() {
$ses_id = session_id();
$query = $this->db->prepare("SELECT * FROM `visitors` WHERE session=? ");
$query->bindValue(1, $ses_id);
try { $query->execute();
$result = $query->fetch();
return $result ['language'];
} catch(PDOException $e){
die($e->getMessage());
}
}
在我的topheader.php中,我有几个标志图像代表每种语言(id,en,fr,ru),其中一个是:
<li><a href="#" ><img src="/images/flags/id.png"></a></li>
问题:
点击旗帜图片,我需要:
我使用了很多方法,但仍然很愚蠢。
<li><a href="#" onClick="ChangeLang('id'); window.location.reload();return false;"><img src="/images/flags/id.png"></a></li>
<script type="text/javascript">
function ChangeLangauge(lg) {
alert("Change Language? Page will be Refresed..!!");
url = "/includes/change-lang.php?newlang=" + lg;
}
</script>
通过这种方式仍然没有改变..
change-lang.php:
<?php
$lg=$_GET['newlang'];
$pages->ChangeLang($lg);
?>
在#pages类中:
public function ChangeLang($lg) {
$ses_id = session_id();
$query = $this->db->prepare("UPDATE `visitors` SET select_lang=? WHERE session=? ");
$query->bindValue(1, $lg);
try {
$query->execute();
} catch(PDOException $e){
die($e->getMessage());
}
}
答案 0 :(得分:0)
也许您可以将链接转到同一页面,最后使用GET变量,例如?lang=en
。然后,创建一个在页面加载时检查该GET变量的函数,在其存在时更改数据库。
function changeLanguage() {
if(!isset($_GET['lang'])) return;
else {
$query = $this->db->prepare("UPDATE visitors SET language = ? WHERE session = ?");
$query->bindValue($_GET['lang'], session_id());
try {
$query->execute();
}
}
假设在您上面发布的示例代码之前发生,您已经创建的函数应该在页面完全加载之前获取新的数据库更改,这将以任何新语言加载页面。< / p>
答案 1 :(得分:0)
PHP脚本早期:
if ( isset($_GET['newlang']) ) {
$pages->ChangeLang($_GET['newlang']);
}
和
public function ChangeLang($lg) {
$ses_id = session_id();
$query = $this->db->prepare("UPDATE `visitors` SET select_lang=? WHERE session=? ");
$query->bindValue(1, $lg);
$query->bindValue(2, $ses_id);
try {
$query->execute();
} catch(PDOException $e){
die($e->getMessage());
}
}
旗帜链接:
<li><a href="?newlang='id'"><img src="/images/flags/id.png"></a></li>