【问题标题】:Why Page redirection not working in php为什么页面重定向在 php 中不起作用
【发布时间】:2014-11-27 15:37:19
【问题描述】:

我不明白为什么下面的代码没有重定向,我已经破坏了会话,所以条件应该是真的,但它没有重定向到这个页面,

<?php
    session_start();

    if(!isset($_SESSION['userid'])) {   
        header('Location: Login.html');
        exit;
    }
?>

但在注销 php 中,重定向运行良好。

<?php
    session_start();
    session_destroy();
    header('Location: Login.html');
    exit;
?>

编辑

我可以在 Chrome 开发者工具中看到重定向调用,但实际上并没有重定向

请帮助我理解我在代码中的错误。

【问题讨论】:

  • 在您打开&lt;?php标签error_reporting(E_ALL); ini_set('display_errors', 1);后立即将错误报告添加到文件顶部,看看它是否会产生任何结果。
  • isset 不检查该值是否为真。它检查密钥是否存在......所以如果$_SESSION['userid'] 存在但为假,它不会重定向。你应该改用empty
  • @Cfreak,我相信 isset 就足够了。他正试图完全删除它。如果它被删除,isset() 将返回 false。他不在乎当前的值是多少
  • @MikeB,所有这些都表示 JS(因为 CORS)。这是在 PHP 中。意思是它的服务器端。独立于浏览器。服务器在将任何内容发送到浏览器之前进行重定向

标签: php redirect


【解决方案1】:

确保&lt;?php 之前没有空格,因为这会阻止您设置任何标题属性。

【讨论】:

    【解决方案2】:

    明确地做unset($_SESSION['userid']); 就足够了。

    session_destroy() 状态的页面

    session_destroy() 销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话 cookie。要再次使用会话变量,必须调用 session_start()。

    为了完全终止会话,例如注销用户,还必须取消设置会话 ID。如果使用 cookie 传播会话 id(默认行为),则必须删除会话 cookie。 setcookie() 可以用于此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      相关资源
      最近更新 更多