обмениваться сеансом между классическим ASP и PHP, чем использовать базу данных

У нас есть веб-приложение для интрасети ASP, которое разработано в течение многих лет, которое работает на IIS6. В настоящее время мы хотели бы добавить некоторые новые функции, используя PHP-язык. PHP работает на одном сервере. Переменные сеансов должны быть разделены между ASP и PHP.

Я спрашиваю, есть ли другие альтернативы для обмена сеансом между классическим ASP и PHP вместо использования базы данных в качестве шлюза (слишком много ресурсов для нас)? Обеим сторонам необходимо прочитать / изменить переменные сеанса.

Поправив немного, я заметил, что PHPSESSID и ASPSESSIONID генерируются на стороне PHP каждый раз, когда пользователь регистрируется в веб-приложении ASP. Они также видны на стороне ASP, которые хранятся внутри сервера Variable HTTP_COOKIE, поэтому я думаю, что может быть корреляция между переменными сеанса ASP и переменными сессий PHP в основе IIS.

Так,

– ASP –

<% Response.write ('HTTP_COOKIE') %> 

дает:

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

– PHP –

  echo '<pre>'; var_dump($_COOKIE) ?> echo '</pre>'; 

дает:

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

на стороне ASP, если я пишу:

 <% Request.Cookies(strCookie)(strKey) %> 

в цикле он дает мне кучу сохраненных файлов cookie ключей / значений.

Но на стороне PHP я не могу найти способ получить список ключей / значений. Может быть, это способ пойти и найти больше? Реальная существующая реализация поможет больше, но любые ответы приветствуются.

Solutions Collecting From Web of "обмениваться сеансом между классическим ASP и PHP, чем использовать базу данных"

Я использовал это раньше для той же цели. Попробуйте эту ссылку http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=9028&lngWId=4

Я никогда раньше не использовал переменные сеанса в PHP, поэтому я предполагаю, что вы уже присвоили значениям $ var1 и $ var2 значения переменных сеанса, которые вы хотите передать в ваш ASP-файл.

 <iframe height="0" width="0" scrolling="No" src="setsession.asp?var1=<?php echo $var1; ?>&var2=<?php echo $var2; ?>"></iframe> 

Тогда ваш файл setsession.asp будет просто

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

Очевидно, что вы можете сделать это наоборот, вам просто нужно понять, как обрабатывать переменные запроса и переменные сеанса на обоих языках

Вы можете сделать это, вызвав session.asp из PHP-скрипта.

Часть 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<count($ck);++$i) { if (strpos($ck[$i],"ASPSESSIONID")===0) { $cook .=$ck[$i]."=".$_COOKIE["$ck[$i]"].";"."<br>"; }//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"); 

… и 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 %>