多语言网站在php $ _GET错误
我试图做一个多语言网站后this的例子。 我做了一个文件夹语言,并创建了2个文件en.php和gr.php。
这里有我的文件
语言/ gr.php
<?php
$lang = array(
//nav bar
'nav1' => 'Αρχική',
'nav2' => 'Δυτική Αττική',
'nav3' => 'Εκδηλώσεις',
'nav4' => 'Σύλλογοι',
'nav5' => 'Καταστήματα'
);
?>
语言/ 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';
?>
当我我试图运行它,我得到这个错误
说明:未定义指数:朗在上线/home/user/public_html/init.php 10
警告:包括(语言/ .PHP):未能打开流:在没有这样的文件或目录/在/ home/user/php中,include(include_path ='。:/ usr/share/php')打开'language/.php'失败。上线的public_html/10的init.php
试图呼应$_GET['lang'];
但结果没有值
这意味着$_GET['lang']
为空
我在想什么?
试试这个
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';
}
有用的链接
阿卜杜拉你好,谢谢你的回答,它的工作就像一个魅力! – vaggelis
@vaggelis接受,如果工作 –
这将不会在后续页面加载时从会话中拉出lang。也就是说,如果你申请GR,那么它会在第一页给你GR,在下一个给你EN。 –
您没有默认设置,因此当_GET
变量为空时,您会在不存在的文件上获得包含。也许只是硬编码默认:
if (empty($_SESSION['lang'])) {
$_SESSION['lang'] = 'en';
}
if (isset($_GET['lang']) ...) {
}
include 'language/' . $_SESSION['lang'] . '.php';
感谢您的答案alex两个答案都像魅力一样工作! – vaggelis
修复路径,其余应遵循 –
如果什么也没有郎$ _GET?我认为你应该为$ _SESSION ['lang'] – Andreas
提供一个初始值,所以现在两个答案都是正确的,哪一个我应该接受为正确的? – vaggelis