我正在尝试使用Cookie设置多媒体网站。一切都很好,但我在设置默认语言时遇到问题。 当我到达没有参数的根网站时,我在php中收到错误“未定义的索引”。
<?php
if (isset ($_COOKIE['CHOIXlang']) && $_GET['langue'] != 'fr' && $_GET['langue'] != 'en' && $_GET['langue'] != 'es')
{
$langue = $_COOKIE['CHOIXlang'];
}
else if ($_GET['langue'] == 'en' || $_GET['langue'] == 'fr' || $_GET['langue'] == 'es')
{
$langue = $_GET['langue'];
set_cookie($langue);
}
else
{
$langue = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
set_cookie($langue);
}
?>
<?php
function set_cookie($langue)
{
$expire = 365*24*3600;
if (setcookie("CHOIXlang", $langue, time() + $expire) != TRUE)
{
}
else
{
setcookie("CHOIXlang", $langue, time() + $expire);
}
}
?>
在身体里:
<?php
if ($_GET['langue'] == "fr" || $langue == "fr")
{
include('lang/fr-lang.php');
}
elseif ($_GET['langue'] == "en" || $langue == "en")
{
include('lang/en-lang.php');
}
elseif ($_GET['langue'] == "es" || $langue == "es")
{
include('lang/es-lang.php');
}
?>
网站打开时,我错过了什么设置默认语言?
谢谢
答案 0 :(得分:1)
您需要检查是否设置了get参数langue:isset($_GET['langue'])
<?php
if (!isset($_GET['langue'])
{
include('lang/default-lang.php');
}
elseif ($langue == "fr")
{
include('lang/fr-lang.php');
}
elseif ($langue == "en")
{
include('lang/en-lang.php');
}
elseif ($langue == "es")
{
include('lang/es-lang.php');
}
?>
此外,您需要更改此行:$langue = $_GET['langue'];
到此:
if (isset($_GET['langue']))
$langue = $_GET['langue'];
<强>更新强>
您无法访问任何不存在的GET值。首先,您需要检查它是否已设置。如果参数已设置,isset($_GET['langue'])
将返回true,因此只需在代码开头使用此检查一次。
我建议这个:
$langue = "";
if (!isset($_GET['langue']){
$langue = $_GET['langue'];
}
然后只使用$langue
代替$_GET['langue']
。
答案 1 :(得分:0)
Set Default Lan可能应该是这样的
if (@$_GET['lang'] == 'en') include('en-lang.php');
else include('fr-lang.php');
使用$ _GET:
这有点长篇大论,但可能是一个更好的方法:
<?php
session_start();
if (isset($_SESSION['lang'])) $lang = $_SESSION['lang'];
if (isset($_GET['lang'])) {
$lang = preg_replace('/[^a-zA-Z]/', '', $_GET['lang']);
$_SESSION['lang'] = $lang;
}
if (!isset($lang)) $lang = 'fr';
$langfile = $lang . '-lang.php';
if (file_exists($langfile)) include ($langfile);
else include('fr-lang.php');
?>