如果会话中没有cookie,我有一段代码可以重定向用户。
if (isset($_GET['lang'])) {
if (in_array($_GET['lang'], $jezici)) {
$lang = $_GET['lang'];
// register the session and set the cookie
$_SESSION['lang'] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
} else {
$lang = 'hr';
$_SESSION['lang'] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
} else if (isset($_SESSION['lang'])) {
$lang = $_SESSION['lang'];
} else if (isset($_COOKIE['lang'])) {
$lang = $_COOKIE['lang'];
} else if (empty($_GET['lang']) || !isset($_GET['lang'])) {
$trenutni_file = basename($_SERVER['PHP_SELF']);
?>
<META http-equiv="refresh" content="0;URL=http://<?php echo $domena; ?>/<?php echo $trenutni_file; ?>?lang=hr">
<?php
exit();
}
?>
这是我在index.php中包含它的方式
$langArray = include 'lang/'.$lang.'.php';
但有时我得到这个错误未能包含lang / .php ...这段代码显然没有做好一切..如果会话中没有设置cookie,我会将用户重定向到index.php?lang=hr
...有什么帮助吗?
答案 0 :(得分:1)
您的上一个条件(empty($_GET['lang']) || !isset($_GET['lang']))
本身就是多余的,因为empty
已经检查了该函数是否已设置,因为您可以阅读here。此外,它与第一个条件是多余的。
此外,您缺少确定在会话或cookie中是否设置var的情况,它实际上不是空的(例如,它可以设置为空字符串)
我会更改所有isset
来电empty
来电,并添加最终的独立条件,如果设置了$ lang,无论如何,以及是否有有效值
if (!empty($_GET['lang'])) {
if (in_array($_GET['lang'], $jezici)) {
$lang = $_GET['lang'];
// register the session and set the cookie
$_SESSION['lang'] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
} else {
$lang = 'hr';
$_SESSION['lang'] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
} else if (!empty($_SESSION['lang'])) {
$lang = $_SESSION['lang'];
} else if (!empty($_COOKIE['lang'])) {
$lang = $_COOKIE['lang'];
}
if (empty($lang) || (!in_array($_GET['lang'], $jezici))) {
$trenutni_file = basename($_SERVER['PHP_SELF']);
?>
<META http-equiv="refresh" content="0;URL=http://<?php echo $domena; ?>/<?php echo $trenutni_file; ?>?lang=hr">
<?php
exit();
}