PHP header 重定向不起作用

标签 php

<分区>

include('header.php');

$name = $_POST['name'];
$score = $_POST['score'];
$dept = $_POST['dept'];

$MyDB->prep("INSERT INTO demo (`id`,`name`,`score`,`dept`, `date`) VALUES ('','$name','$score','$dept','$date')");
// Bind a value to our :id hook
// Produces: SELECT * FROM demo_table WHERE id = '23'
$MyDB->bind(':date', $date);
// Run the query
$MyDB->run();

header('Location:index.php');
    exit;

上面的代码一直给我一个重定向问题。错误如下:

Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/testygubbins/OO/test/header.php:15) in /Applications/MAMP/htdocs/testygubbins/OO/test/form.php on line 16.

我完全被这个弄糊涂了。有谁知道我应该怎么做才能让它发挥作用?

编辑

header.php代码:

<?php
include('class.user.php');
include('class.Connection.php');

$date = date('Y-m-j');

?>
<html>
<head>
    <link rel=StyleSheet href="css/style.css" type="text/css" media=screen>
    <title>Test</title>
</head>
<body>
<div id="page">

最佳答案

仔细查看您的包含 - 也许您在结束后有一个空行 ?> ?

这将导致一些文字空白作为输出发送,从而阻止您进行后续的 header 调用。

请注意,在包含文件中保留关闭 ?> 是合法的,这是避免此问题的有用习惯用法。

(编辑:查看您的 header ,如果您想输出 header 或使用输出缓冲来捕获它,则需要避免执行任何 HTML 输出)。

最后,作为PHP manual page for header指出,你真的应该使用完整的 URLs 来重定向:

Note: HTTP/1.1 requires an absolute URI as argument to Location: including the scheme, hostname and absolute path, but some clients accept relative URIs. You can usually use $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] and dirname() to make an absolute URI from a relative one yourself:

关于PHP header 重定向不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/423860/

相关文章:

php - 将大小值输入数据库 PHP

php - 如何保护基于 php 的网络服务

php - Cake PHP 选择下拉列表

php - 使用 LIMIT 和 BETWEEN 运算符的类似子查询的较短 SQL 语句

php - 创建一个允许成员(member)注册其他成员(member)的网络应用程序

php - 将谷歌地图 v2 转换为谷歌地图 v3

php - 使用 Jquery 从客户端的图像中删除红眼

php - socket.io + php + 目前这是一个现实的解决方案吗

php - Laravel Cashier 3D Secure/SCA 问题 strip

java - 使用 jquery 单击后 AmCharts 无法工作