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';
}

有用链接

  1. PHP in_array() Function
  2. PHP 5 Sessions
  3. isset() and empty() - what to use