php $ variables不在IF语句之外工作

时间:2015-05-15 23:12:16

标签: php if-statement cookies

else {
    if ($_COOKIE['HotspotLanguage'] == 'ENG') { 
        $url_lang_code = '?lang=eng'; 
        header('Location: '.$url_captive_portal.$url_lang_code.'');
    } elseif ($_COOKIE['HotspotLanguage'] == 'ALB') { 
        $url_lang_code = '?lang=alb'; 
        header('Location: '.$url_captive_portal.$url_lang_code.''); 
    } elseif ($_COOKIE['HotspotLanguage'] == 'MKD') { 
        $url_lang_code = '?lang=mkd'; 
        header('Location: '.$url_captive_portal.$url_lang_code.'');
    }
}

从上面的代码中可以看出,我已经定义了一个变量$url_lang_code;但是,我的变量不在if语句之外工作。

URL被重写,这有效。但是,如果我在if语句之外的某处使用$url_lang_code,它就不起作用......

我做错了吗?

1 个答案:

答案 0 :(得分:5)

您正在使用header()方法,该方法会保留当前脚本并加载您要求的页面。

因此,您基本上丢失了该范围,您可以将其存储在$ _SESSION或$ _COOKIE var中,并从您要求的其他页面中检索它。

类似于:

  else {
    if ($_COOKIE['HotspotLanguage'] == 'ENG') { 
        $_COOKIE['url_lang_code'] = '?lang=eng'; 
        header('Location: '.$url_captive_portal.$url_lang_code);
    } elseif ($_COOKIE['HotspotLanguage'] == 'ALB') { 
        $_COOKIE['url_lang_code'] = '?lang=alb'; 
        header('Location: '.$url_captive_portal.$url_lang_code);  
    } elseif ($_COOKIE['HotspotLanguage'] == 'MKD') { 
        $_COOKIE['url_lang_code'] = '?lang=mkd'; 
        header('Location: '.$url_captive_portal.$url_lang_code);
    }
  }