我一直无法找到足够接近的答案来找到有效的解决方案。
我正在一个自定义网站工作,在不同点,在用户可以继续操作之前,会检查用户登录状态。如果他们未登录,系统会要求他们先登录,然后允许他们继续。为了保持用户体验干净,其中大部分是通过包含 iframe 的页面内弹出窗口完成的。
登录功能运行良好,但是当用户完成操作并关闭窗口时,仍然显示"登录"按钮,使其看起来尚未登录。他们实际上必须刷新页面才能看到他们的登录状态。但是,我希望登录状态也显示无缝。
目前,我在父页面的div中包含登录链接:
<div class="top_nav">
<div class="contest_buttons">
<div class="c_button bkg_gray c_bottom w_quarter" id="#login_tab">
<?php echo showif(!empty($_SESSION['userID']),'
<a href="enter.php?go=logout">Logout</a>','
<a href="enter.php?go=login&iframe=true&width=450&height=275" rel="prettyPhoto[iframe]">Login</a>'); ?>
</div>
<div class="c_button bkg_gray c_bottom w_quarter" id="#profile_tab">
<?php echo showif(!empty($_SESSION['userID']),'
<a href="profile.php">My Profile</a>','
<a href="enter.php?go=register&iframe=true&width=550&height=450" rel="prettyPhoto[iframe]">Register</a>'); ?>
</div>
<div class="c_button bkg_gray c_bottom w_half">
<a href="http://waynedailynews.com/" target="_blank">Wayne Daily News</a>
</div>
</div>
</div>
我得到的最接近任何可能工作的东西是:
$('#login_tab', window.parent.document).html('<a href="enter.php?go=logout">Logout</a>');
我真的不确定从那里去哪里。
至少,我希望#login_tab
在登录完成后读取"注销",但是能够更新#profile_tab
以读取"我的个人资料"也很棒。
我是一名PHP程序员,到目前为止,我只是涉足JS和jQuery,所以即使为我指出正确的方向也可能有所帮助。 :)
我发现了一些显示出一些希望的东西。它没有我想要的那么干净,但这段代码似乎可能有一个解决方案......
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$("a[rel^='prettyPhoto']").prettyPhoto(
{
callback: function(){
document.location.reload(true);
}
})
});
</script>
因为我正在使用 PrettyPhoto 来创建弹出窗口和 iframe,所以我可能能够集成一个方法或调用另一个脚本来处理我的需求,并且它会在用户关闭窗口的事件中发生。
如何才能使某些东西以这种方式工作?
方法可以做到这一点。
您可以在iframe内的页面上使用登录按钮。
或者您可以为 php vars 中的 2 个按钮创建 html 并通过所述按钮链接调用。?
但是,我会尝试使用JS和CSS,请查看这个简单的按钮状态切换示例。http://css-tricks.com/swapping-out-text-five-different-ways/
阅读您的最新评论后,也许尝试根据会话状态创建登录按钮。
例如:
if( !isset($_SESSION) ){
//echo login links here
}
也不要忘记使用
session_start();
在 iframe 中显示的页面中。