Php 下载标题显示“我的服务器”上的错误

Php 下载标题显示“我的服务器”上的错误,php,header,Php,Header,这是我的第二页,我的第一页是下载按钮 <?php session_start(); //user not logged in, no direct access if (!isset($_SESSION['user'])) header("location:../admin/"); include "../config.php"; if(isset($_POST['downld'])) { header( "Content-Type: application/vnd.ms-excel"

这是我的第二页,我的第一页是下载按钮

<?php
session_start();

//user not logged in, no direct access
if (!isset($_SESSION['user'])) header("location:../admin/");

include "../config.php";
if(isset($_POST['downld'])) {
header( "Content-Type: application/vnd.ms-excel" );
header( "Content-disposition: attachment; filename=emc_promo_".date("m-d-Y").".xls" );
$q="select * from emc_leadgen2 order by emc_time_date desc  ";
$r=mysql_query($q);
$count=mysql_num_rows($r);
if($count>0) {?> 
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
<head>
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
</head>
<body>
<table cellpadding="3" cellspacing="0"  border="1" >    
<tr><td colspan="8" align="center"><b>Lead Gen Form for EMC on <?=date("m-d-Y")?></b></td></tr>  
<tr>
<td style="padding:5px;"><b>FIRST NAME</b></td>
<td style="padding:5px;"><b>LAST NAME</b></td>
<td style="padding:5px;"><b>NAME OF ORG.</b></td>
<td style="padding:5px;"><b>JOB TITLE</b></td>
<td style="padding:5px;"><b>MAIL</b></td>
<td style="padding:5px;"><b>PHONE</b></td>
<td style="padding:5px;"><b>ADDRESS</b></td>
<td style="padding:5px;"><b>STORAGE</b></td>
<td style="padding:5px;"><b>TIME & DATE</b></td>
</tr>
<?php while($row=mysql_fetch_array($r)) {?>
<tr>
<td style="padding:5px;"><?=$row['emc_fname']?></td>
<td style="padding:5px;"><?=$row['emc_lname']?></td>
<td style="padding:5px;"><?=$row['emc_organization']?></td>
<td style="padding:5px;"><?=$row['emc_job_title']?></td>
<td style="padding:5px;"><?=$row['emc_email']?></td>
<td style="padding:5px;"><?=$row['emc_phone']?></td>  
<td style="padding:5px;"><?=$row['emc_address']?></td>
<td style="padding:5px;"><?=$row['emc_storage']?></td>
<td style="padding:5px;"><?=$row['emc_time_date']?></td>
</tr>
<?php
}
}
}
?>
</table>
</body>
</html>

当我点击下载按钮时,它显示了这个错误

警告:无法修改标题信息-标题已由发送 (输出开始于 /home/content/59/8131259/html/leadyourtran/offer1/config.php:6)中 /主页/content/59/8131259/html/leadyourtran/offer1/admin/downld.php 第8行

警告:无法修改标题信息-标题已由发送 (输出开始于 /home/content/59/8131259/html/leadyourtran/offer1/config.php:6)中 /主页/content/59/8131259/html/leadyourtran/offer1/admin/downld.php 第9行

我的第8行和第9行都只是头一行。

header()
,就像
session\u start()
必须在任何输出或html代码之前调用。如果在
header()
之前包含文件中的输出(或警告错误),则会导致这些错误

检查config.php的第6行(在error mesage中指定)。

header()
,如
session\u start()
必须在任何输出或html代码之前调用。如果在
header()
之前包含文件中的输出(或警告错误),则会导致这些错误

检查config.php,第6行(在error mesage中指定)。

尝试添加

ob_start();
在php文件的顶部

如果默认情况下,
输出缓冲
关闭
,并且您不幸将一个字节的数据发送回客户端,则您的
HTTP
头已经发送。这有效地防止了
会话\u start()
将cookie头传递回客户端。通过调用
ob_start()
可以启用缓冲,从而延迟发送http头

借用另一个答案

在“正常情况下”,我不认为必须在
会话开始之前调用
ob\u start
——也不认为必须在会话开始之前调用
ob\u start

不过,引用以下的话:

会话_start()将注册内部 用于URL重写的输出处理程序 已启用trans sid。如果用户使用 带有ob_start()的ob_gzhandler或类似程序, 输出处理程序的顺序为 对于正确的输出很重要。对于 例如,用户必须注册 在会话开始之前执行ob_gzhandler

但这是一种特殊情况:这里的问题是,输出处理程序的顺序很重要:如果您希望一个处理程序修改另一个处理程序所做的事情,那么它们必须以“正确”的顺序执行


通常,如果您不使用这种处理程序(例如Apache,在压缩输出方面做得很好),唯一重要的是在调用
session\u start
(因为,根据您的配置,
session\u start
发送cookie,这些cookie作为HTTP头传递)

只要有任何数据需要发送,就会发送头文件,也就是说,只要有任何输出,即使是
标记之外的一个空格:

注意:如果您使用的是基于cookie的 会话,你必须打电话 会话_start(),然后执行任何操作 输出到浏览器

ob_start
表示PHP必须缓冲数据:

此函数将打开输出 缓冲打开。当输出缓冲时 处于活动状态时,未从发送任何输出 改为使用脚本(标题除外) 输出存储在一个内部存储器中 缓冲区

这样,在您自己实际说“发送数据”之前,不会发送输出。这意味着不会立即发送标题——这意味着以后可以调用
session\u start
,即使没有使用
ob\u start
,也应该有输出


希望这能让事情变得更清楚…

尝试添加

ob_start();
在php文件的顶部

如果默认情况下,
输出缓冲
关闭
,并且您不幸将一个字节的数据发送回客户端,则您的
HTTP
头已经发送。这有效地阻止了
会话启动()
将cookie头传递回客户端。通过调用
ob\u start()
可以启用缓冲,从而延迟发送http头

借用另一个答案

在“正常情况下”,我不认为必须在
会话开始之前调用
ob\u start
——也不认为必须在会话开始之前调用
ob\u start

不过,引用以下的话:

会话_start()将注册内部 用于URL重写的输出处理程序 已启用trans sid。如果用户使用 带有ob_start()的ob_gzhandler或类似程序, 输出处理程序的顺序为 对于正确的输出非常重要。对于 例如,用户必须注册 在会话开始之前执行ob_gzhandler

但这是一种特殊情况:这里的问题是,输出处理程序的顺序很重要:如果您希望一个处理程序修改另一个处理程序所做的事情,那么它们必须以“正确”的顺序执行


通常,如果您不使用这种处理程序(例如Apache,在压缩输出方面做得很好),唯一重要的是在调用
session\u start
(因为,根据您的配置,
session\u start
发送cookie,这些cookie作为HTTP头传递)

只要有任何数据需要发送,就会发送头文件,也就是说,只要有任何输出,即使是
标记之外的一个空格:

注意:如果您使用的是基于cookie的 会话,你必须打电话 会话_start(),然后执行任何操作 输出到浏览器

ob_start
表示PHP必须缓冲数据:

此函数将打开输出 缓冲打开。当输出缓冲时 处于活动状态时,未从发送任何输出 改为使用脚本(标题除外) 输出存储在一个内部存储器中 日分