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

Bor*_*rsn -1 php cookies 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.'');
    }
}
Run Code Online (Sandbox Code Playgroud)

从上面的代码中可以看出,我已经定义了一个变量$url_lang_code; 但是,我的变量在if声明之外不起作用.

URL被重写,这是有效的.但是,如果我使用$url_lang_codeif语句之外的某个地方,它就不起作用......

难道我做错了什么?

mic*_*blu 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);
    }
  }
Run Code Online (Sandbox Code Playgroud)