2017-04-11 96 views
0

在PHP中,我可以通過使用Session_id()作爲設置器來選擇使用特定的Session。在經典ASP中設置SessionId?

有沒有在傳統的ASP/VBScript中的任何類似的功能?我有一個VBScript網站,根據頁面,它可以直接從瀏覽器調用,也可以通過HTTP在內部調用。不幸的是ASP將這些視爲兩個單獨的會話,因爲用戶的計算機調用一個,而服務器本身調用另一個。我想告訴服務器調用,「嘿,使用會話123456」,以便它可以直接與用戶調用頁面共享信息。

有什麼建議嗎?任何方式來改變或命名頁面上使用的會話?

+0

你能舉個例子嗎?服務器調用不會與瀏覽器共享cookie ...... –

+1

ASP會話沒有這種內置方法。但是你可以在你的內部請求中手動設置cookie的頭部(通過解析來自Request.ServerVariables(「ALL_RAW」)的會話cookie的值)。 –

+1

你從哪裏發出內部請求?因爲,如果兩者都是ASP,就會發生死鎖。 –

回答

3

ASP Classic中沒有像PHP的Session_id()這樣的內置方法。

ASP的Session對象有保證狀態的一致性嚴格的鎖定機制,這樣可以防止您作出具有相同的應用程序池在同一會話標識符的附加要求。

在另一方面,它很容易實現的橋樑與同域下的不同的平臺,如PHP共享會話狀態。


How to access ASP classic session variable from PHP?

0

我不知道,我明白你的問題是正確的。你需要爲每個用戶提供一個變量?你爲什麼沒有使用應用程序變量?

<% 
    x=session.sessionID 
    if not instr(application("x"),x)>0 then 
     application("x")=application("x") & x &";" 
    end if 

    aArr=split(application("x"),";") 

    for i=0 to ubound(aArr) 
     REM this will show you all used session.variables 
     response.write aArr(i)&"<br>" 
    next 
%> 
+0

ASP通過在包含會話ID的用戶瀏覽器上設置cookie來跟蹤會話。有時候這個特定的網站通過一個頁面(通常是PHP腳本)通過cURL直接在服務器端調用ASP頁面。在這種情況下,「用戶」不是使用瀏覽器的人,而是PHP腳本 - 它沒有我的瀏覽器中的cookie。我需要這些案例以某種方式與網絡瀏覽器具有相同的會話。當ASP調用PHP時,PHP可以只設置會話ID,但走向另一個方向,VBScript似乎無法做到這一點 –

+0

爲什麼你不創建自己的會話ID?或使用應用程序變量而不是會話 例如: 如果session(「mySession」)&「」=「」then session time,「:」,「」)&request.serverVariables(「remote_addr」) end – multinett

+0

因爲在Classic VBScript中不能這樣做。這實際上是個問題! –