php $变量在 IF 语句之外不起作用

php $variables don't work outside IF statement

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,它就不起作用...

我是不是做错了什么?

您正在使用 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);
    }
  }