私は簡単な多言語サポートのための基本的なスクリプトを設定しました。 私の問題は、ユーザーが手動でURLに自分のGETパラメータを入力するとエラーが表示されることです(もちろん、どこにも正しく表示されないためです)。たとえば、私は 'en'と 'el'の配列を設定しましたが、この言語が私の配列にないので、ユーザーが手動で 'de'をタイプすると、定義されていないインデックスのエラーページが表示されます。私はデフォルトの言語が選択された状態で、ユーザをindex.phpにリダイレクトしたい。ここでGET値のパラメータを配列のものに制限するにはどうすればよいですか?
は私の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'=>'Δύναμη'
)
);
?>
(isset($ _ GET)&&($ _GET ['lang'] == 'es' || $ _GET ['lang'] == 'en'){ } else {//ここであなたのコードを実行してください} –