【问题标题】:PHP Logout script not redirecting correctlyPHP注销脚本未正确重定向
【发布时间】:2013-12-28 16:32:18
【问题描述】:

所以我正在使用 jQuery mobile 和 PHP 通过此代码退出我的网站

要访问注销代码,请单击注销按钮。编码是这样的

  <div data-role="footer" data-id="foo1" data-position="fixed">
       <div data-role="navbar" data-iconpos="top">
           <ul>
                <li><a href="logout.php" data-transition="none" data-icon="delete">Sign Out</a></li>
           </ul>
       </di>
  </div>

这是 logout.php 脚本

 session_start();
 session_destroy();
 header('location: login.php');

它可以让我退出并带我进入登录页面,但网址是

 mysite.com/logout.php

而不是

 mysite.com/login.php

显示login.php信息但url错误。我该如何解决?

【问题讨论】:

  • 您是否确保在更改标题后不回显任何内容?
  • "[...它可以让我退出并带我进入登录页面...]" 如果 url 没有,它如何带您进入登录页面不改变?
  • 空白页通常意味着错误报告已关闭,生成了错误或警告但您看不到它们。此外,在header('location: page.php') 之后使用exit() 也是个好主意,以防您在标头之后有更多代码并且用户代理不遵循位置标头。

标签: php jquery session


【解决方案1】:

试试这样的:

header('Location: login.php');
die();

有没有报错?

顺便说一句:你也可以试试这个:

session_start();
session_destroy();
die("<meta http-equiv='refresh' content='0;url=login.php'>");

【讨论】:

  • 这里,die() 很重要,它会阻止页面进一步加载并重定向到标题位置。 +1
  • 据我所知,我没有错误,我添加了你给我的两个例子似乎都不起作用。我还编辑了问题以展示一个活生生的例子
  • 它似乎工作正常。在您的实时测试中,我可以登录和注销,再次在登录页面中结束脚本而没有空白页
  • 所以我正在使用 >> jQuery mobile
  • 我刚刚添加了我的答案,这就是我为解决它所做的。
【解决方案2】:

在移动框架(如 jQuery mobile)之外使用指向页面的链接时,您必须在 href 中包含 rel="external"&gt;

例如:

<a href="logout.php" data-transition="none" data-icon="delete" rel="external">Sign Out</a>

这非常重要,否则它会认为您希望它保留在您进来的同一页面中。

【讨论】:

    【解决方案3】:

    我需要改变

     <li><a href="logout.php" data-transition="none" data-icon="delete">Sign Out</a></li>
    

     <li><a href="logout.php" data-transition="none" data-icon="delete" rel="external">Sign Out</a></li>
    

    有人指出,对于 jquery mobile,它认为我想留在页面中,所以我需要添加 rel="external"

    我还在脚本中添加了die("&lt;meta http-equiv='refresh' content='0;url=login.php'&gt;");

    这两个都解决了问题

    【讨论】:

    • 这就是我在评论rel="external"(15 分钟前)中写的,但你从来没有费心回答我。所以我删除了它。您真的应该检查 cmets,它们与发布的答案一样重要。
    • 好吧,当我尝试它并回来感谢您时,您已将其删除!
    • 我不会等 15 分钟。我有更好的事情要做。自从它问世以来,我一直在使用 jQuery mobile。
    • 谢谢。我在下面发布了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 2016-01-21
    • 1970-01-01
    • 2020-11-30
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多