【发布时间】:2012-12-23 02:12:11
【问题描述】:
我有一个小书签,可以在外国网页上注入一个按钮。单击该按钮时,会出现一个包含我网站页面的弹出窗口。
我正在使用一个名为 Laravel 的 PHP 框架,使用 Chrome 浏览器进行测试
问题:当我在弹出窗口中检查用户是否从来自我网站的页面登录时,它总是返回用户未登录。
if( Auth::guest() ) {
echo "Not logged in";
} else {
echo "Logged in";
}
但是,当我直接访问同一页面时(不是在从另一个网站打开的弹出窗口中),我可以看到我已登录!
这里有什么问题,如何解决?
弹出 JS 代码
var popupOptions = 'status=no,resizable=yes,scrollbars=yes,personalbar=no,directories=no,location=no,toolbar=no,menubar=no,width=632,height=295,left=0,top=0';
window.open(' http://www.domain.com/controllername/add?url='+url, '_blank', popupOptions);
【问题讨论】:
-
两件事,您没有在弹出页面中启动会话,或者为会话设置的 cookie 设置了不同的 cookie 路径,例如 /somefolder/ 会话将无法在该文件夹之外访问.检查您的 cookie 以查看已设置的内容。
-
当我在弹出窗口中时,我看到 2 个具有相同名称
laravel_session的 cookie... 用于www.domain.com和domain.com。当我在弹出窗口外查看我的网站时,我只为domain.com设置了 cookie... -
您可以随时在页面上抛出
print_r($_SESSION)并查看正在传递什么。 (可能与“referrer”字段有关) -
您不应该拥有两个同名的 cookie。看起来弹出窗口正在设置另一个具有相同名称但不同域的 cookie 覆盖应该用于 domain.com 的有效 cookie。你能发布弹出窗口的代码吗?
-
有一瞬间我以为你说吃饼干。
标签: php jquery session cookies laravel