【问题标题】:Header() is not redirecting PHP [closed]Header() 没有重定向 PHP [关闭]
【发布时间】:2012-10-10 11:04:19
【问题描述】:

我正在使用以下 PHP 代码来检查会话。但如果会话未登录,则页面不会重定向,只显示黑页。

我的如果条件是对的!它正在命中标题功能.. 这是我的代码:

if(
    !isset($_SESSION['SESS_MEMBER_ID']) 
    || (trim($_SESSION['SESS_MEMBER_ID']) == '') 
    AND !isset($fb_login)
) {
    header("location:login.php?msg=Please+Login+Again.");
}

欢迎提出建议!

HTTP/1.1 200 OK
Date: Wed, 10 Oct 2012 10:57:14 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

【问题讨论】:

标签: php redirect http-headers


【解决方案1】:

如果您在输出内容后使用header("Location: ");,请确保您已将ob_start(); 放在脚本的前面。 ob_start(); 缓冲您的脚本,因此在您调用 ob_end(); 或到达文件末尾之前不会输出任何内容。在内容已经输出到浏览器之后调用header("Location: "); 可能会导致问题。

【讨论】:

  • 你的权利!好的,让我尝试放置 Ob_start();和 ob_end();正确
  • 没问题。现在能用了吗? :)
  • 不,对不起,伴侣不工作:/同样的问题...
  • 那么发生了什么?您被发送到一个随机页面或该页面正在继续加载?试试看:if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') && !isset($fb_login)) { header("location:login.php?msg=Please+Login+Again."); } else { print("In else."); } 然后如果你看到“In else”。你知道条件语句解析为假。
  • 所以它没有输出“In else.”?所以它必须评估为真。但是……你看到的只是一个白页,你还在同一页上吗?如果您尝试在header("Location: "); 之后打印一些内容会怎样?
【解决方案2】:

ob_start(); 放在 PHP 文件的开头,会有帮助,

<?php
    ob_start();
    /*
    Your code
    */
 ?>

【讨论】:

  • 没用,我已经添加了这个代码!但仍然没有重定向
  • 感谢它对我有用
【解决方案3】:

确保设置出口;或者死;在命令之后:并使“位置”以大写开头

if (!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') AND !isset($fb_login)) {           
    header("Location:login.php?msg=Please+Login+Again.");
    exit;
}

【讨论】:

  • 我试过但没有成功!
【解决方案4】:

L 大写。

 header("Location: login.php?msg=Please+Login+Again.");
 exit(); // just a precaution

【讨论】:

  • 我试过了!不工作 if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') AND !isset($fb_login)) { header("Location:login.php ?msg=请+登录+再次。");出口(); }
  • HTTP 标头名称不区分大小写。该标头的语法存在一些问题,但大小写不是其中之一。任何明智的用户代理都将能够应对所有这些问题。这不是问题。
【解决方案5】:

尝试正确格式化标题:

header("Location: login.php?msg=Please+Login+Again.");

当然,请确保您在调用之前没有发送任何输出(故意或错误地)。

【讨论】:

  • 这个我试过了。但不工作..同样的错误
【解决方案6】:
header("Location: login.php?msg=Please+Login+Again.");
exit();

【讨论】:

  •  if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') AND !isset($fb_login)) { header("位置:login.php?msg=请+登录+再次。");出口(); } 
    不工作
  • 不工作?你遇到了什么错误?
  • 没有错误,它只是显示空白页!它不会重定向
  • 空白页的url是什么?
【解决方案7】:

1)确保在 header() 函数之前不要发送任何内容

2) 将“位置”改为“位置:”

【讨论】:

  • 是的,我没有发送任何东西!我的页面的顶部代码。我做了正确的格式化仍然无法正常工作。仅显示银行页面。
  • 你能确保你的 IF 子句是正确的并运行 header() 吗?做一些回声“某事”以确保
  • 如果工作完美!如果我设置会话,那么我的页面加载完美!
  • 如果我的会话没有设置,那么它必须重定向到 index.php 或 login.php .. 但它只是显示空白页
【解决方案8】:

补充其他人所说的,你确定满足条件打到header()

你可以使用 empty() 来清理你的代码并做一些测试:

//Debug
unset($_SESSION['SESS_MEMBER_ID']);
unset($fb_login);

if(empty($_SESSION['SESS_MEMBER_ID']) && !isset($fb_login)) {
    exit(header("Location: login.php?msg=Please+Login+Again."));
}

【讨论】:

  • 实际情况完美!条件没有问题。如果我不是未设置会话,则它必须重定向。如果我的会话已设置,则显示更多页面!
【解决方案9】:

尝试将AND 更改为&amp;&amp;

if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') && !isset($fb_login)
    ) {
        header("location:login.php?msg=Please+Login+Again.");
    }

【讨论】:

  • 我的条件是正确的,它是命中标题功能
猜你喜欢
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多