php $_GET 错误中的多语言网站
multilingual website in php $_GET error
我正在尝试按照 this 示例制作一个多语言网站。
我制作了一个文件夹语言并创建了 2 个文件 en.php 和 gr.php.
这是我的文件
language/gr.php
<?php
$lang = array(
//nav bar
'nav1' => 'Αρχική',
'nav2' => 'Δυτική Αττική',
'nav3' => 'Εκδηλώσεις',
'nav4' => 'Σύλλογοι',
'nav5' => 'Καταστήματα'
);
?>
language/en.php
<?php
$lang = array(
//nav bar
'nav1' => 'Home',
'nav2' => 'West Attica',
'nav3' => 'News/Events',
'nav4' => 'Associations',
'nav5' => 'Stores'
);
?>
和ini.php
<?php
session_start();
$allowed_lang = array('gr', 'en');
if (isset($_GET['lang']) === true && in_array($_GET['lang'], $allowed_lang) === true){
$_SESSION['lang'] = $_GET['lang'];
}
include 'language/' . $_SESSION['lang'] . '.php';
?>
当我尝试 运行 时,我得到了这个错误
Notice: Undefined index: lang in /home/user/public_html/init.php on line 10
Warning: include(language/.php): failed to open stream: No such file or directory in /home/peerkavlos/public_html/init.php on line 10
Warning: include(): Failed opening 'language/.php' for inclusion (include_path='.:/usr/share/php') in /home/user/public_html/init.php on line 10
试图回应 $_GET['lang'];
但结果没有价值
表示$_GET['lang']
为空
我错过了什么?
你没有默认值,所以当 _GET
变量为空时,你会得到一个不存在的文件的包含。也许只是硬编码一个默认值:
if (empty($_SESSION['lang'])) {
$_SESSION['lang'] = 'en';
}
if (isset($_GET['lang']) ... ) {
}
include 'language/' . $_SESSION['lang'] . '.php';
试试这个
if (!empty($_GET['lang']) && in_array($_GET['lang'], $allowed_lang))
{
# TRUE part
$_SESSION['lang'] = $_GET['lang'];
include 'language/' . $_SESSION['lang'] . '.php';
}
else
{
# FALSE part
echo "Selected Language Couldn't initialize";
include 'language/en.php';
}
有用链接
- PHP
in_array()
Function
- PHP 5 Sessions
isset()
and empty()
- what to use
我正在尝试按照 this 示例制作一个多语言网站。 我制作了一个文件夹语言并创建了 2 个文件 en.php 和 gr.php.
这是我的文件
language/gr.php
<?php
$lang = array(
//nav bar
'nav1' => 'Αρχική',
'nav2' => 'Δυτική Αττική',
'nav3' => 'Εκδηλώσεις',
'nav4' => 'Σύλλογοι',
'nav5' => 'Καταστήματα'
);
?>
language/en.php
<?php
$lang = array(
//nav bar
'nav1' => 'Home',
'nav2' => 'West Attica',
'nav3' => 'News/Events',
'nav4' => 'Associations',
'nav5' => 'Stores'
);
?>
和ini.php
<?php
session_start();
$allowed_lang = array('gr', 'en');
if (isset($_GET['lang']) === true && in_array($_GET['lang'], $allowed_lang) === true){
$_SESSION['lang'] = $_GET['lang'];
}
include 'language/' . $_SESSION['lang'] . '.php';
?>
当我尝试 运行 时,我得到了这个错误
Notice: Undefined index: lang in /home/user/public_html/init.php on line 10
Warning: include(language/.php): failed to open stream: No such file or directory in /home/peerkavlos/public_html/init.php on line 10
Warning: include(): Failed opening 'language/.php' for inclusion (include_path='.:/usr/share/php') in /home/user/public_html/init.php on line 10
试图回应 $_GET['lang'];
但结果没有价值
表示$_GET['lang']
为空
我错过了什么?
你没有默认值,所以当 _GET
变量为空时,你会得到一个不存在的文件的包含。也许只是硬编码一个默认值:
if (empty($_SESSION['lang'])) {
$_SESSION['lang'] = 'en';
}
if (isset($_GET['lang']) ... ) {
}
include 'language/' . $_SESSION['lang'] . '.php';
试试这个
if (!empty($_GET['lang']) && in_array($_GET['lang'], $allowed_lang))
{
# TRUE part
$_SESSION['lang'] = $_GET['lang'];
include 'language/' . $_SESSION['lang'] . '.php';
}
else
{
# FALSE part
echo "Selected Language Couldn't initialize";
include 'language/en.php';
}
有用链接
- PHP
in_array()
Function - PHP 5 Sessions
isset()
andempty()
- what to use