1

我正在尝试将当前用户 ID 从一个网站传递到另一个网站。

例如,用户登录 users.domain.com 这将创建用户 ID 的 $_SESSION['uid']。我需要能够在 domain.com 上获取此用户 ID 值。

我尝试设置 session_set_cookie_params:

session_set_cookie_params( 0, "/", ".domain.com", false, false); 

这确实适用于我的本地服务器,但不适用于我的托管公司,可能是因为会话数据存储在单独的服务器上,或者他们根本不允许这样做。

我已经阅读了许多使用 $_GET、Cookie 或 HTTP 标头来存储用户 ID 的帖子/答案,但我发现这是一种非常不安全的做法。

Facebook 之类的公司如何处理 $facebook->getUser(); ?

任何帮助将不胜感激,我已经在网上搜索了很长一段时间没有运气。
谢谢,克里斯。

4

1 回答 1

1

仅当您能够在原始服务器上创建数据库表时,此答案才适用。

我不会编写代码,但它更像是一个指南:

1) 在您的原始服务器上创建一个表,名称类似于tbl_auth_tokens以下字段record_id (auto_increment primary_key)user_id (int)token_id (varchar (32))

2)在将用户重定向到另一个域之前,使用 MD5(或其他包含足够随机字符串以使其唯一的哈希函数)生成一个随机令牌。

3) 将用户 ID 和令牌 ID 保存到tbl_auth_tokens表中,使用查询字符串中的 将用户重定向到另一个域token_id

4) 在新服务器上,使用提供的令牌 ID 从原始服务器数据库中检索用户 ID,然后完全删除令牌记录。

此方法至少会阻止用户 ID 可见,并且任何潜在的窃听者只会看到一个 token_id,一旦用户在第二台服务器上得到验证,该 token_id 就会删除。

此外,您可能希望创建一个自动删除功能,以便在闲置 2 分钟后删除令牌。

如果您需要更多指导,请随时发表评论:)

于 2013-05-29T21:20:15.450 回答