![](/img/trans.png)
[英]How can I get my foreach loop to output the result as one combined array instead of separate ones?
[英]How can I limit the parameters of the GET values to the ones in my array?
我已经为简单的多语言支持设置了基本脚本。 我的问题是,如果用户在URL上手动键入自己的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'=>'Δύναμη'
)
);
?>
检查“ lang.php”文件中的条件,如下所示
$Arr_languages=array("en","el");
if (!(in_array($_GET['lang'],$Arr_languages))
header('Location: index.php');exit;
else {
//your process;
}
if (!in_array($_GET['lang'], ["en","el"])) { // PHP 7
header('Location: /index.php');
}
另一种方法是在运行set_lang()
函数之前,在脚本顶部为$_SESSION['lang_ses']
设置默认值。
$_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
您的英语页面将使用默认语言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.