子页面上的Javascript错误的Cookie路径

时间:2019-04-28 19:59:33

标签: javascript cookies

我正在使用Javascript设置Cookie以进行语言选择,因此网站使用该Cookie来获取所选的语言翻译。当有人在主登录页面上更改语言时,没有问题,但是如果您在之前更改了子页面上的语言之后再次更改了语言,则会写入第二个Cookie,例如,路径为/ contact。因此,正在创建具有不同lang值的双cookie,这会带来问题。我无法理解问题,因此任何帮助都会有所作为。谢谢

  
      
  1. cookie:lang = eng,path = / contact
  2.   
  3. cookie:lang = fr,path = /
  4.   

我正在使用的代码

<?php
    $langs = array('en' => 'English',
                   'fr' => 'French'
                  );

    function is_current_language($code)
    { 

             return ($code == $_COOKIE['lang'])? 'selected="selected"': "";
    }
?>

<select onchange="if(this.selectedIndex!=0) eraseCookie('lang');createCookie('lang',this.options[this.selectedIndex].value,30) ; location.reload()" name="userLanguage" id="userLanguage">
    <?php foreach($langs as $code => $lang) { ?>

      <option <?php echo is_current_language($code); ?> value="<?php echo $code; ?>">
         <?php echo $lang; ?>
      </option>
   <?php } ?>
</select>

JavaScript

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

0 个答案:

没有答案