从其他网站重定向时,会话变量丢失

时间:2011-12-03 09:30:52

标签: php session oauth

我使用OAuth在外部网站进行身份验证。一切都很好,但会话变量在从外部网站重定向后丢失。

要点: 我在我的网站上存储会话var然后转到其他网站的登录页面。登录并确认后,它会重定向到我的回调,当我检查上一个会话var时,它会错过!如何解决?

我尝试在使用会话的任何地方调用session_start(),但它不起作用。当然我在“php.ini”中启用了会话并在浏览器中启用了cookie。 :)我调试但无法找到原因。

enter image description here

更新 存储我的会话var后,我做了这样的请求: http://mixi.jp/connect_authorize.pl?oauth_callback=http%3A%2F%2Fmypage.com%2Fcallback.php&oauth_token=fjdklsfjlksd

注意oauth_callback,它是重定向URL。我不知道mixi.jp用于重定向。

2 个答案:

答案 0 :(得分:3)

确保您的网站在重定向之前和之后100%完全相同。

请注意

www.yoursite.com 

yoursite.com

是两个不同的网站。

答案 1 :(得分:1)

会话ID存储在cookie中。 cookie会在您注册的域的每个页面中发送。当您跳转到另一个域时,您的cookie不会发送会话ID。您必须将会话ID传递给新域,然后在此域中使用会话ID创建新的cookie。

header('Location:redirect.php?session=' . session­_id());

然后在重定向的页面中恢复会话

<?php
  session_id($_GET['session']);
  session_start();