一尘不染

PHP标头重定向不起作用[重复]

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;

上面的代码不断给我重定向的问题。错误如下:

警告:无法修改标头信息-已在/ Applications / MAMP / htdocs / testygubbins / OO / test /
form中发送的标头(输出始于/Applications/MAMP/htdocs/testygubbins/OO/test/header.php:15)。第16行的php。

我对此完全感到困惑。有谁知道我应该做些什么才能使其正常工作?

编辑

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">

阅读 214

收藏
2020-05-26

共1个答案

一尘不染

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

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

请注意,将close?>保留在include文件之外是合法的,这对于避免此问题很有用。

(编辑:查看标头,如果要输出标头或使用输出缓冲捕获它,则需要避免进行任何HTML输出)。

最后,正如标题的PHP手册页指出的那样,您实际上应该使用完整的URL进行重定向:

注意:HTTP / 1.1要求使用绝对URI作为 Location的 参数
包括方案,主机名和绝对路径,但是某些客户端会接受相对URI。通常,您可以使用$ _SERVER [‘HTTP_HOST’],$ _ SERVER
[‘PHP_SELF’]和dirname()从您自己的亲戚那里创建绝对URI:

2020-05-26