我们的问题是我们使用一个服务器来监听端口80和端口8080,其中端口分别映射到数据库和网站。这种分离的原因是由于技术问题(它不是合并这些的选项)。 “database”-server可以处理PHP,但不能处理后者。
我们正在尝试使用PHP脚本实现会话。持有用户的数据库是mySQL数据库,会话用于用户的登录功能。我们使用jQuery的Ajax函数来获取在数据库服务器上编码的login-dialog-box。
如果我们测试数据库服务器上的login-dialog-box,那就好了。我们每次都获得相同的会话ID。但是,当我们尝试在网站服务器上使用它时(在使用Ajax调用加载它之后),我们会收到每个请求的新会话ID(即,每次我们执行某些操作时)!所以我们无法使用会话来跟踪事情,因为我们无法将会话ID保持链接到“活动会话”(这听起来不像我希望的那样好)。
我们不确定此处发生了什么,但怀疑数据库服务器将每个请求视为“新用户”。有意义吗?
我们如何解决这个问题?
事先,谢谢! : - )
旁注: 不确定它是否相关,但我们已经看到很多主题询问它:是的,我们已经开始了会议! : - )
答案 0 :(得分:0)
Pecka,如果我正确理解你所有的身份验证都发生在“数据库服务器”,对吗?如果是这样,AJAX调用只返回数据库服务器的响应,而不是它通常用于帮助跟踪会话的cookie。
通过查看在AJAX调用期间交换的HTTP头来仔细检查我,但我认为您只获取“数据库服务器”返回的可见内容。
要查看标题,您可以使用Firefox和Live Headers附加组件。 https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/
如果我错过了理解,请回复,我会再拍一次。
您可以让数据库服务器在其响应中传递加密的令牌,如下所示:
if( [ENTER CRITERIA FOR CHECKING LOGIN HERE ]) {
$hashSalt = 'PleasePr0tectM3';
$token = md5($_POST['username' .date('mdY') .$hashSalt);
echo $token;
}
它必须是网络服务器也可以根据给定的输入在其末端计算的东西。然后,Web服务器会创建相同的哈希,如果它们匹配,您可以让Web服务器向它们发出会话凭据。
这很难看,但它可能会奏效。
让我知道。 :)