php设置一个cookie并通过自动实现更改其值

时间:2013-08-15 13:01:36

标签: php redirect cookies lang

目前正在创建一个小型网站,我正在尝试在法语和英语之间添加一个多语言工具。但我面临着一些问题。基本上,我有两个按钮,英语和法语来改变语言。但如果是第一次访问时间,则应设置默认语言(此处为法语)。

所以我创建了一个小脚本,它不像我期望的那样工作......

if(!isset($_COOKIE['lang_ylx'])) {

 $timestamp_expiration = time()+30*24*3600 ;

if(!isset($_GET['lang'])) {                      
    setcookie('lang_ylx', 'fr',$timestamp_expiration, null, null, false, true);
}

else if ($_GET['lang']=='fr') {      // si la langue est 'fr' par le bouton de langue, on définit le cookie francais
    setcookie('lang_ylx', 'fr',$timestamp_expiration, null, null, false, true); //On définit un cookie de langue
    header('Location: index.php');  
} 

else if ($_GET['lang']=='en') { 
    setcookie('lang_ylx', 'en',$timestamp_expiration, null, null, false, true); 
    header('Location: index.php');  

}

该脚本会自动使用带有include的index.php加载。现在,我只有index.php而且我正在尝试,当我点击例如英文按钮时,在URL中传递参数,然后改变cookie以使其获得'en'值,然后返回index.php

我的lang文件是两个测试cookie值的巨型循环。 但是每当我点击英文或法文按钮时,我都会被lang.php困住,但它应该回到index.php,并且会有新的语言。

任何想法?

1 个答案:

答案 0 :(得分:1)

$timestamp_expiration = time()+30*24*3600 ;
if(!isset($_COOKIE['lang_ylx'])) {
    //If you want your default to be english, use this:
    setcookie('lang_ylx', 'en', $timestamp_expiration, null, null, false, true);
    //French:
    setcookie('lang_ylx', 'fr',$timestamp_expiration, null, null, false, true);
}

/*if(!isset($_GET['lang'])) {                      
    setcookie('lang_ylx', 'fr',$timestamp_expiration, null, null, false, true);
}*/
//Comment out above because you're setting french every time llang isn't set.
if (isset($_GET['lang']){
    else if ($_GET['lang']=='fr') {      // si la langue est 'fr' par le bouton de langue, on définit le cookie francais
        setcookie("lang_ylx", "", time()-3600);
        setcookie('lang_ylx', 'fr',$timestamp_expiration, null, null, false, true); //On définit un cookie de langue
    header('Location: index.php');  
    } 

    else if ($_GET['lang']=='en') {
        setcookie("lang_ylx", "", time()-3600);
        setcookie('lang_ylx', 'en',$timestamp_expiration, null, null, false, true); 
        header('Location: index.php');  
    }
}

你有:

  1. an}在错误的地方
  2. 未设置任何默认值