我已经设置了一个简单的多语言支持的基本脚本。 我的问题是,如果用户在网址上手动输入他自己的GET参数,它会显示错误(当然因为它没有正确引导)。例如,我为' en'设置了一个数组。和' el'但如果用户手动输入' de'由于此语言不在我的数组中,因此将导致未定义索引的错误页面。我想将用户重定向到index.php并选择默认语言。
这是我的index.php
<?php
include('lang.php');
set_lang();
$current = $_SESSION['lang_ses'];
?>
<html>
<body>
<div style="height:100px; background-color:red; color:black;">
<a href="index.php?lang=en">ENG</a>
<a href="index.php?lang=el">EL</a>
</div>
<div style="height:400px; background-color:gray; color:white;">
<h2><?php echo $langarray[$current]['service1']; ?></h2>
<h2><?php echo $langarray[$current]['service2']; ?></h2>
<h2><?php echo $langarray[$current]['service3']; ?></h2>
</div>
</body>
</html>
这是我的脚本lang.php
<?php
function set_lang() {
session_start(); // Starting php session
$default = 'en'; // Here you can set with which language the website should start.
if(!isset($_SESSION['lang_ses'])) { // Setting up chosen language or load default language
if(isset($_COOKIE['lang'])) {
$_SESSION['lang_ses'] = $_COOKIE['lang'];
} else {
$_SESSION['lang_ses'] = $default;
}
}
if(isset($_GET['lang'])) {
$_SESSION['lang_ses']=$_GET['lang'];
setcookie('lang',$_GET['lang'],time()+24*3600); // writing cookie
}
}
$langarray = array(
'en'=>array(
'service1'=>'Health',
'service2'=>'Beauty',
'service3'=>'Strength'
),
'el'=>array(
'service1'=>'Υγεία',
'service2'=>'Ομορφιά',
'service3'=>'Δύναμη'
)
);
?>
答案 0 :(得分:0)
检查“lang.php”文件中的条件如下
$Arr_languages=array("en","el");
if (!(in_array($_GET['lang'],$Arr_languages))
header('Location: index.php');exit;
else {
//your process;
}
答案 1 :(得分:0)
if (!in_array($_GET['lang'], ["en","el"])) { // PHP 7
header('Location: /index.php');
}
另一种方法是在运行$_SESSION['lang_ses']
函数之前在脚本之上设置set_lang()
的默认值。
$_SESSION['lang_ses'] = "en";
set_lang();
在你的函数中使用这样的比较
if (!in_array($_GET['lang'], ["en","el"])) { // PHP 7
$defaultLangCode = $_SESSION['lang_ses'];
} else {
$defaultLangCode = $_GET['lang'];
}
...使用$defaultLangCode
继续您的脚本,这样就不需要重定向了。您将拥有my.site/de
英文页面的默认语言。