2011-12-03 99 views
2

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

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

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

enter image description here

更新: 存储我的会议无功后,我不喜欢这样的请求: http://mixi.jp/connect_authorize.pl?oauth_callback=http%3A%2F%2Fmypage.com%2Fcallback.php&oauth_token=fjdklsfjlksd

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

+1

远程页面是否将页眉重定向到您的页面?用户被重定向到100%的域是否相同?请记住,'www.domain.com'和'domain.com'是不同的域会话明智 –

+0

对不起,我不明白你的意思。 :(请参阅我上面的更新请求 – Emerald214

回答

1

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

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

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

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

但是他跳到另一个域*并返回*当他回来时,cookie应该仍然存在 –

+0

饼干和重定向总是会引起头痛 – macjohn

+0

如果使用正确,则不会:) –

3

做之前和之后的重定向确保您的网站的域名是100%相同。

注意

www.yoursite.com 

yoursite.com 

是两个不同站点的cookie明智的。

+0

^这是真的。我将$ _SERVER ['REDIRECT_SCRIPT_URI']设置为我的重定向URI,以确保'www'存在与否。 –

+0

redirect_script_URI可能无法在您的服务器上运行,请尝试输出$ _SERVER以查看您拥有的选项! 了解: http://stackoverflow.com/questions/189113/how-do-i-get-current-page-full-url-in-php-on-a-windows-iis-server –