PHP标头重定向无法正常工作

时间:2014-03-22 02:59:26

标签: php

我尝试在确认登录凭据后将用户重定向到新页面,但由于某种原因,重定向无效。它似乎与我的header.php文件有关。当我在之前包含重定向时,它可以正常工作;但是如果我尝试在此文件之后包含它,它就不起作用。

我已尝试将重定向添加到header.php本身,当我将其直接包含在<html>标记之前时,它可以正常工作(我说工作正常,但它会产生错误,而不是它否则; Firefox has detected that the server is redirecting the request for this address in a way that will never complete.)。

我已经检查了所有文件的空白等,这使我找到了与header.php相关的问题。 header.php导致此问题的原因是什么,考虑到它在 HTML标记之前启动,而在之后 之后启动

<html>
<head>
    <title><?php echo $pageTitle; ?></title>
    <link rel="stylesheet" href="<?php echo BASE_URL; ?>css/style.css" type="text/css">
    <link rel="stylesheet" href="<?php echo BASE_URL; ?>css/property.css" type="text/css">
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Oswald:400,700" type="text/css">
    <link rel="shortcut icon" href="<?php echo BASE_URL; ?>favicon.ico">
</head>
<body>

    <div class="header">

        <div class="wrapper">

            <h1 class="branding-title"><a href="<?php echo BASE_URL; ?>">Some title</a></h1>

            <ul class="nav">
                <?php
                  /* list items with a class of "on" indicate the current section; those links 
                   * are underlined in the CSS to communicate that back to the site visitor;
                   * the $section variable is set in each individual file
                   */
                ?>
                <li class="shirts <?php if ($section == "shirts") { echo "on"; } ?>"><a href="<?php echo BASE_URL; ?>shirts/">Shirts</a></li>
                <li class="contact <?php if ($section == "contact") { echo "on"; } ?>"><a href="<?php echo BASE_URL; ?>contact/">Contact</a></li>
                <li class="search <?php if ($section == "search") { echo "on"; } ?>"><a href="<?php echo BASE_URL; ?>search/">Search</a></li>
                <li class="cart"><a target="paypal" href="XYZ">Shopping Cart</a></li>
            </ul>

        </div>

    </div>

    <div id="content">

1 个答案:

答案 0 :(得分:0)

  

虽然当我把它放在标签之前时标题确实有用,但它在其他地方不起作用。

这实际上是你的问题。只能在发送正文之前设置标题。您只需要将重定向保留在任何页面内容之上。

这是HTTP响应的结构:

HTTP/1.1 200 OK
Header-1: bacon
Header-2: more bacon

<html>
<head>
  <title>Bacon</title>
...

重定向是HTTP标头,特别是Location标头。在你已经发送数据后你不能设置它(你可以,但它很奇怪和复杂)。您应该在代码中的某处发现错误,假设您在某处有错误报告。

关于你的其他问题......

  

Firefox检测到服务器正在以永远无法完成的方式重定向此地址的请求。

那是因为你在循环中重定向(即重定向到重定向重定向回自身)。如果您的重定向位于header.php,假设您在页面上包含该重定向,那么您可能也是问题。