【问题标题】:Redirection not happening in Php [duplicate]Php中没有发生重定向[重复]
【发布时间】:2017-03-31 21:54:15
【问题描述】:

我在 session_start() 函数周围使用了一个特殊的包装类来为我的会话添加保护。

要注销用户,我有一个这样的按钮:

 <a href="logout.php">
  <button data-toggle="modal" data-backdrop="false" href="" name="out" class="btn btn-primary navbar-btn" style="margin-right: 3px"><span class="glyphicon glyphicon-user"></span>Log Out</button></a>

这里是logout.php:

<?php

error_reporting(0);
include('SessionManager.php');
$mySess = new SessionManager();
$session = $mySess -> sessionStart('InstallationName'); // create/start a new session or start the existent session

$mySess -> destroy(); //destroy the session

header('Location: page1bis.php');
exit();
?>

这是我的 SessionManager 类中的 destroy() 函数:

<?php
class SessionManager
{
          .
          .
          .
static protected function destroy()
{
    echo $_SESSION['cook'];echo "<br>";
    echo "hello !";
    session_destroy();
    echo $_SESSION['cook'];
}
}
?>

但是当点击注销按钮时,它会进入lougout.php页面,但没有进行重定向,这里也是lougout.php的输出> 页面:

tfe0eccar02k3pgi5b7i8i2ek5
hello !

p.s: logout.php 中的回声只是在这里表明会话被有效地破坏(或者应该有 2 个令牌),也 即使我删除它们 strong> 还是一样的问题

【问题讨论】:

  • 一旦你echo'ed 任何东西,你就不能再发送标题了。您应该将控制流与输出分开。除此之外,您应该打开警告。
  • 链接中不能有按钮。
  • 确保header() 重定向位于页面的最顶部。在任何 HTML 之前。如果 HTML 先设置标题,header 函数将无法生成标题。
  • 顺便说一句 error_reporting(0); 这对你的事业没有帮助。

标签: php


【解决方案1】:

重定向前不能输出。

要么在输出之前移动位置重定向逻辑,要么您可以在脚本的第一行添加ob_start();,然后该输出将在重定向时被丢弃。

【讨论】:

  • 您好,感谢您的回答我刚刚删除了我的 logout.php 文件中的所有回声,但我仍然遇到同样的问题(没有重定向)。
【解决方案2】:

打开您的 PHP 错误。您应该会看到类似 Warning: Cannot modify header information - headers already sent by... 的内容,这意味着您不能在 header-function 之前回显/打印任何内容。

【讨论】:

  • 其实我有另一个错误显示=> 致命错误:调用受保护的方法SessionManager::destroy,所以我删除了protected我的功能,但现在当单击“注销”按钮时,它会重定向正确但 session_detroy 不起作用(我仍然有一个令牌)
  • 你怎么知道你还有一个令牌?根据你的第一篇文章,你的回声看起来像这样tfe0eccar02k3pgi5b7i8i2ek5 hello ! 如果你还有一个令牌,它看起来像这样:tfe0eccar02k3pgi5b7i8i2ek5 hello ! tfe0eccar02k3pgi5b7i8i2ek5
猜你喜欢
  • 2021-06-26
  • 2017-09-04
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 2014-01-28
  • 1970-01-01
相关资源
最近更新 更多