compartilhe a session entre o clássico ASP e o PHP em vez de usar o database

Temos uma aplicação web de intranet ASP desenvolvida ao longo dos anos que está sendo executada no IIS6. Hoje em dia, gostaríamos de adicionar algumas funcionalidades novas usando o idioma PHP. O PHP está funcionando bem no mesmo servidor. As variables ​​de sessões precisam ser compartilhadas entre ASP e PHP.

Estou perguntando se existem outras alternativas para compartilhar session entre ASP clássico e PHP em vez de usar o database como gateway (muitos resources que consome para nós)? Ambos os lados precisam ler / editar variables ​​de session.

Ao ajustar um pouco, notei que um PHPSESSID e ASPSESSIONID são gerados no lado do PHP sempre que um usuário está logado no aplicativo da Web ASP. Estes também são visíveis no lado ASP, que são armazenados dentro do servidor HTTP_COOKIE variável, então eu acho que pode haver uma correlação entre as sessões ASP e as variables ​​de sessões PHP no coração do IIS.

Assim,

– ASP –

 

dá:

 __utma=...; __utmz=...; computer%5Fid=AAA; lan=fre;ASPSESSIONIDXXXXXXXX=BBBBBBBBBBBBBBBBBBBBBBBB; user_login=cccc 

– PHP –

  echo '
'; var_dump($_COOKIE) ?> echo '

';

dá:

 Array ( [__utma] => ... [__utmz] => ... [computer_id] => AAA [lan] => fre [ASPSESSIONIDXXXXXXXX] => BBBBBBBBBBBBBBBBBBBBBBBB [user_login] => cccc ) 

no lado ASP, se eu escrever:

  

Em um loop, ele me dá uma grande lista de cookies de session de chave / valores armazenados.

Mas, no lado do PHP, não consigo encontrar uma maneira de obter essa lista de chaves / valores. Pode ser que seja o caminho a seguir e encontrar mais? Uma implementação existente real ajudaria mais, mas todas as respostas são bem-vindas.

Eu usei isso antes para o mesmo propósito. Experimente este link http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=9028&lngWId=4

Eu nunca usei as variables ​​de session no PHP antes, então aqui suponho que você já atribuiu $ var1 e $ var2 os valores das variables ​​de session que você deseja passar para o seu arquivo ASP.

  

Então seu arquivo setsession.asp seria simplesmente

 <% Session("var1") = Request.Querystring("var1") Session("var2") = Request.Querystring("var2") %> 

Obviamente, você poderia fazer isso ao contrário, basta entender como lidar com as variables ​​de session de consulta e de session em ambos os idiomas

Você pode fazer isso chamando session.asp do script PHP.

Parte PHP:

 $link = "$http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $url=explode("/",$link); array_pop($url); $urlp=implode("/",$url)."/"; //here we get the url path $ck=array_keys($_COOKIE); for ($i=0;$i"; }//we need to pass ASPSESSIONID cookies to ASP script } $opts = array( 'http'=>array( 'method'=>"GET", 'header'=>"Cookie: ".$cook ) ); //function for reading/writing ASP session values function aspsession() { global $urlp,$opts; $n=urlencode(func_get_arg(0)); if (func_num_args()==2) { $v=urlencode(func_get_arg(1)); return file_get_contents("$urlp../session.asp?n=$n&v=$v",NULL,stream_context_create($opts)); } else { return file_get_contents("$urlp../session.asp?w=$n",NULL,stream_context_create($opts)); }//put the right relative URL for session.asp //make sure it's in the same application as your other ASP scripts, //so it has the same session } //to test if it works aspsession("a","test"); echo aspsession("a"); 

… e a session.asp :

 <% @Language = "VBScript" ENABLESESSIONSTATE = True%> <% Response.ContentType="text/plain" %> <% Response.Expires=-1 %> <% n=Request.QueryString("n") v=Request.QueryString("v") if n<>"" then session(n)=v else Response.Clear Response.Write session(Request.QueryString("w")) end if %> 
Intereting Posts