Como acessar a variável de session ASP clássica do PHP?

Eu tenho um site de back office protegido por login escrito no clássico ASP em execução no Windows. O status de logon é armazenado em uma variável de session. Eu também tenho uma página PHP que deve ser acessível apenas para usuários registrados. Como faço para verificar em PHP que o cliente está logado neste site?

PS Pode haver vários usuários acessando a página ao mesmo tempo.

Ao assumir que os aplicativos PHP e ASP compartilham o mesmo nome de domínio, aqui está um guia passo a passo.

1 – Crie um arquivo asp chamado sessionConnector.asp .

2 – No sessionConnector.asp , serialize o object Session.Contents em um formato que o PHP pode deserializar, o JSON, por exemplo. Você pode usar o JSON.asp do aspjson .

 <%@Language=VBScript CodePage=65001%>  <% Set JSONObject = jsObject() For Each Key In Session.Contents If Not IsObject(Session.Contents(Key)) Then 'skip the objects cannot be serialized JSONObject(Key) = Session.Contents(Key) End If Next JSONObject.Flush %> 

3 – Crie uma function PHP chamada GetASPSessionState() .

4 – No GetASPSessionState() , faça uma solicitação HTTP para sessionConnector.asp , especificando o header do Cookie preenchido com $_SERVER["HTTP_COOKIE"] que deve conter o identificador da Sessão ASP, então o ASP pode identificar o usuário ea resposta variará de acordo com do utilizador.

5 – Depois de obter a resposta (seqüência de JSON), deserialize usando json_decode e procure a variável de session ASP.

 function GetASPSessionState(){ if(stripos($_SERVER["HTTP_COOKIE"], "ASPSESSIONID") === false){ # since ASP sessions stored in memory # don't make request to get ASP session state if the cookie does not contain ASPSESSIONID # otherwise IIS will create new redundant sessions for each of your checks so it wouldn't be a memory-friendly way # returning an empty array return array(); } else { $options = array('http' => array('method'=>"GET", 'header' => "Cookie: " . $_SERVER["HTTP_COOKIE"]) ); $cx = stream_context_create($options); $response = file_get_contents("http://mywebsite.com/sessionConnector.asp", false, $cx); return json_decode($response, JSON_FORCE_OBJECT); } } $aspSessionState = GetASPSessionState(); if($aspSessionState["IsLoggedIn"] == true){ //user previously logged in with the ASP } 
Intereting Posts