2017-04-11 97 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中不能这样做。这实际上是个问题! –