故障排除“警告:session_start():无法发送会话缓存限制器 - 标头已发送" [英] Troubleshooting "Warning: session_start(): Cannot send session cache limiter - headers already sent"
问题描述
我收到警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 已发送标头(输出开始于错误
如果我将表单数据提交到不同的文件进行处理,它就可以工作.但是,如果我将表单数据提交到同一页面,则会出现此错误.
请推荐
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><头><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><link href="style.css" rel="stylesheet" type="text/css"/><title>欢迎</title><script type="text/javascript" src="jquery.js"></script><script type="text/javascript">$(document).ready(function () {$('#nav li').hover(功能 () {//显示其子菜单$('ul', this).slideDown(100);},功能 () {//隐藏其子菜单$('ul', this).slideUp(100);});});头部><身体><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td class="header"> </td></tr><tr><td class="menu"><table align="center" cellpadding="0" cellspacing="0" width="80%"><tr><td><ul id="导航"><li><a href="#">目录</a><ul><li><a href="#">产品</a></li><li><a href="#">批量上传</a></li><div class="clear"></div><li><a href="#">购买</a><li><a href="#">客户服务</a><ul><li><a href="#">联系我们</a></li><li><a href="#">CS面板</a></li><div class="clear"></div><li><a href="#">所有报告</a></li><li><a href="#">配置</a><ul><li><a href="#">外观</a></li><li><a href="#">业务详情</a></li><li><a href="#">CS详情</a></li><li><a href="#">Emaqil 模板</a></li><li><a href="#">域和分析</a></li><li><a href="#">Courier</a></li><div class="clear"></div><li><a href="#">帐户</a><ul><li><a href="#">Ledgers</a></li><li><a href="#">账户详情</a></li><div class="clear"></div></li></ul></td></tr></table></td></tr><tr><td valign="top"><table width="80%" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2"><tr><td width="22%" height="327" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2"><tr><td> </td></tr><tr><td height="45"><strong>->产品</strong></td></tr><tr><td height="61"><strong>->类别</strong></td></tr><tr><td height="48"><strong>->子类别</strong></td></tr></table></td><td width="78%" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td> </td></tr><tr><td><table width="90%" border="0" cellspacing="0" cellpadding="0"><tr><td width="26%"> </td><td width="74%"><h2>管理类别</h2></td></tr></table></td></tr><tr><td height="30"> </td></tr><tr><td></td></tr><tr><td><table width="49%" align="center" cellpadding="0" cellspacing="0"><tr><td><?phpif (isset($_SESSION['error'])){echo "<span id="error"><p>".$_SESSION['错误'] ."</p></span>";未设置($_SESSION['错误']);}?><form action="<?php echo $_SERVER['PHP_SELF']; ?>"method="post" enctype="multipart/form-data"><p><label class="style4">类别名称</label> <input type="text" name="categoryname"/><br/><br/><label class="style4">类别图片</label> <input type="file" name="image"/><br/><input type="hidden" name="MAX_FILE_SIZE" value="100000"/><br/><br/><input type="submit" id="submit" value="上传"/></p></表单><?phpsession_start();require("includes/conn.php");函数 is_valid_type($file){$valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif", "image/png");如果 (in_array($file['type'], $valid_types))返回 1;返回0;}函数 showContents($array){echo "";print_r($array);echo "</pre>";}$TARGET_PATH = "图片/类别";$cname = $_POST['categoryname'];$image = $_FILES['image'];$cname = mysql_real_escape_string($cname);$image['name'] = mysql_real_escape_string($image['name']);$TARGET_PATH .= $image['name'];if ( $cname == "" || $image['name'] == "" ){$_SESSION['error'] = "所有字段都是必需的";header("位置:managecategories.php");出口;}如果 (!is_valid_type($image)){$_SESSION['error'] = "您必须上传 jpeg、gif 或 bmp";header("位置:managecategories.php");出口;}如果(文件存在($TARGET_PATH)){$_SESSION['error'] = "同名文件已经存在";header("位置:managecategories.php");出口;}如果 (move_uploaded_file($image['tmp_name'], $TARGET_PATH)){$sql = "插入类别 (CategoryName, FileName) 值 ('$cname', '" . $image['name'] . "')";$result = mysql_query($sql) or die ("无法将数据插入数据库:" .mysql_error());header("位置:mangaecategories.php");出口;}别的{$_SESSION['error'] = "无法上传文件.检查目录的读/写权限";header("位置:mangagecategories.php");出口;}?>
这是显示代码
";echo "<tr><td> </td><td>类别 ID</td><td>类别名称</td><td>状态</td><td>/td><td>删除</td></tr>";echo "<tr><td> <img src="images/" . $row['FileName'] . "" alt=""/> </td>";回声<td>".$row['CategoryID'] ."</td>";回声<td>".$row['CategoryName'] ."</td>";回声<td>".$row['状态']."</td>";echo "<td> <a href='edit.php?CategoryID=".$row['id']."'>编辑</a></td>";echo "<td> <a href='delete.php?CategoryID=".$row['id']."'>编辑</a></td>";echo "</tr> </table>";}?>
这里什么也没发生.请推荐
您会发现我在页面的最顶部添加了 session_start().我还删除了页面后面的 session_start() 调用.此页面应该可以正常工作.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><头><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><link href="style.css" rel="stylesheet" type="text/css"/><title>欢迎</title><script type="text/javascript" src="jquery.js"></script><script type="text/javascript">$(document).ready(function () {$('#nav li').hover(功能 () {//显示其子菜单$('ul', this).slideDown(100);},功能 () {//隐藏其子菜单$('ul', this).slideUp(100);});});头部><身体><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td class="header"> </td></tr><tr><td class="menu"><table align="center" cellpadding="0" cellspacing="0" width="80%"><tr><td><ul id="导航"><li><a href="#">目录</a><ul><li><a href="#">产品</a></li><li><a href="#">批量上传</a></li><div class="clear"></div><li><a href="#">购买</a><li><a href="#">客户服务</a><ul><li><a href="#">联系我们</a></li><li><a href="#">CS面板</a></li><div class="clear"></div><li><a href="#">所有报告</a></li><li><a href="#">配置</a><ul><li><a href="#">外观</a></li><li><a href="#">业务详情</a></li><li><a href="#">CS详情</a></li><li><a href="#">Emaqil 模板</a></li><li><a href="#">域和分析</a></li><li><a href="#">Courier</a></li><div class="clear"></div><li><a href="#">帐户</a><ul><li><a href="#">Ledgers</a></li><li><a href="#">账户详情</a></li><div class="clear"></div></li></ul></td></tr></table></td></tr><tr><td valign="top"><table width="80%" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2"><tr><td width="22%" height="327" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2"><tr><td> </td></tr><tr><td height="45"><strong>->产品</strong></td></tr><tr><td height="61"><strong>->类别</strong></td></tr><tr><td height="48"><strong>->子类别</strong></td></tr></table></td><td width="78%" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td> </td></tr><tr><td><table width="90%" border="0" cellspacing="0" cellpadding="0"><tr><td width="26%"> </td><td width="74%"><h2>管理类别</h2></td></tr></table></td></tr><tr><td height="30"> </td></tr><tr><td></td></tr><tr><td><table width="49%" align="center" cellpadding="0" cellspacing="0"><tr><td><?phpif (isset($_SESSION['error'])){echo "<span id="error"><p>".$_SESSION['错误'] ."</p></span>";未设置($_SESSION['错误']);}?><form action="<?php echo $_SERVER['PHP_SELF']; ?>"method="post" enctype="multipart/form-data"><p><label class="style4">类别名称</label> <input type="text" name="categoryname"/><br/><br/><label class="style4">类别图片</label> <input type="file" name="image"/><br/><input type="hidden" name="MAX_FILE_SIZE" value="100000"/><br/><br/><input type="submit" id="submit" value="上传"/></p></表单><?phprequire("includes/conn.php");函数 is_valid_type($file){$valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif", "image/png");如果 (in_array($file['type'], $valid_types))返回 1;返回0;}函数 showContents($array){echo "";print_r($array);echo "</pre>";}$TARGET_PATH = "图片/类别";$cname = $_POST['categoryname'];$image = $_FILES['image'];$cname = mysql_real_escape_string($cname);$image['name'] = mysql_real_escape_string($image['name']);$TARGET_PATH .= $image['name'];if ( $cname == "" || $image['name'] == "" ){$_SESSION['error'] = "所有字段都是必需的";header("位置:managecategories.php");出口;}如果 (!is_valid_type($image)){$_SESSION['error'] = "您必须上传 jpeg、gif 或 bmp";header("位置:managecategories.php");出口;}如果(文件存在($TARGET_PATH)){$_SESSION['error'] = "同名文件已经存在";header("位置:managecategories.php");出口;}如果 (move_uploaded_file($image['tmp_name'], $TARGET_PATH)){$sql = "插入类别 (CategoryName, FileName) 值 ('$cname', '" . $image['name'] . "')";$result = mysql_query($sql) or die ("无法将数据插入数据库:" .mysql_error());header("位置:mangaecategories.php");出口;}别的{$_SESSION['error'] = "无法上传文件.检查目录的读/写权限";header("位置:mangagecategories.php");出口;}?>
i am getting Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at error
If i submit form data to a different file for processing, it works. But if i submit form data to the same page, it gives this error.
please suggst
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
<title>Welcome</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#nav li').hover(
function () {
//show its submenu
$('ul', this).slideDown(100);
},
function () {
//hide its submenu
$('ul', this).slideUp(100);
}
);
});
</script>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="header"> </td>
</tr>
<tr>
<td class="menu"><table align="center" cellpadding="0" cellspacing="0" width="80%">
<tr>
<td>
<ul id="nav">
<li><a href="#">Catalog</a>
<ul><li><a href="#">Products</a></li>
<li><a href="#">Bulk Upload</a></li>
</ul>
<div class="clear"></div>
</li>
<li><a href="#">Purchase </a>
</li>
<li><a href="#">Customer Service</a>
<ul>
<li><a href="#">Contact Us</a></li>
<li><a href="#">CS Panel</a></li>
</ul>
<div class="clear"></div>
</li>
<li><a href="#">All Reports</a></li>
<li><a href="#">Configuration</a>
<ul> <li><a href="#">Look and Feel </a></li>
<li><a href="#">Business Details</a></li>
<li><a href="#">CS Details</a></li>
<li><a href="#">Emaqil Template</a></li>
<li><a href="#">Domain and Analytics</a></li>
<li><a href="#">Courier</a></li>
</ul>
<div class="clear"></div>
</li>
<li><a href="#">Accounts</a>
<ul><li><a href="#">Ledgers</a></li>
<li><a href="#">Account Details</a></li>
</ul>
<div class="clear"></div></li>
</ul></td></tr></table></td>
</tr>
<tr>
<td valign="top"><table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td width="22%" height="327" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td> </td>
</tr>
<tr>
<td height="45"><strong>-> Products</strong></td>
</tr>
<tr>
<td height="61"><strong>-> Categories</strong></td>
</tr>
<tr>
<td height="48"><strong>-> Sub Categories</strong></td>
</tr>
</table></td>
<td width="78%" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td> </td>
</tr>
<tr>
<td>
<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="26%"> </td>
<td width="74%"><h2>Manage Categories</h2></td>
</tr>
</table></td>
</tr>
<tr>
<td height="30">
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
<table width="49%" align="center" cellpadding="0" cellspacing="0">
<tr><td>
<?php
if (isset($_SESSION['error']))
{
echo "<span id="error"><p>" . $_SESSION['error'] . "</p></span>";
unset($_SESSION['error']);
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<p>
<label class="style4">Category Name</label>
<input type="text" name="categoryname" /><br /><br />
<label class="style4">Category Image</label>
<input type="file" name="image" /><br />
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<br />
<br />
<input type="submit" id="submit" value="UPLOAD" />
</p>
</form>
<?php
session_start();
require("includes/conn.php");
function is_valid_type($file)
{
$valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif", "image/png");
if (in_array($file['type'], $valid_types))
return 1;
return 0;
}
function showContents($array)
{
echo "<pre>";
print_r($array);
echo "</pre>";
}
$TARGET_PATH = "images/category";
$cname = $_POST['categoryname'];
$image = $_FILES['image'];
$cname = mysql_real_escape_string($cname);
$image['name'] = mysql_real_escape_string($image['name']);
$TARGET_PATH .= $image['name'];
if ( $cname == "" || $image['name'] == "" )
{
$_SESSION['error'] = "All fields are required";
header("Location: managecategories.php");
exit;
}
if (!is_valid_type($image))
{
$_SESSION['error'] = "You must upload a jpeg, gif, or bmp";
header("Location: managecategories.php");
exit;
}
if (file_exists($TARGET_PATH))
{
$_SESSION['error'] = "A file with that name already exists";
header("Location: managecategories.php");
exit;
}
if (move_uploaded_file($image['tmp_name'], $TARGET_PATH))
{
$sql = "insert into Categories (CategoryName, FileName) values ('$cname', '" . $image['name'] . "')";
$result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());
header("Location: mangaecategories.php");
exit;
}
else
{
$_SESSION['error'] = "Could not upload file. Check read/write persmissions on the directory";
header("Location: mangagecategories.php");
exit;
}
?>
Here is the code for Display
<?php
require("includes/conn.php");
$sql = "select CategoryID, CategoryName, FileName, Status from Categories";
$result = mysql_query($sql) or die ("Could not access DB: " . mysql_error());
while ($row = mysql_fetch_assoc($result))
{
echo "<table border='0' cellpadding='10'>";
echo "<tr><td> </td><td>Category ID</td><td>Category Name</td><td>Status</td><td>Edit</td><td>Delete</td></tr>";
echo "<tr><td> <img src="images/" . $row['FileName'] . "" alt="" /> </td>";
echo "<td>". $row['CategoryID'] . "</td>";
echo "<td>". $row['CategoryName'] . "</td>";
echo "<td>". $row['Status']. "</td>";
echo "<td> <a href= 'edit.php?CategoryID=" .$row['id']. "'> Edit </a></td>";
echo "<td> <a href= 'delete.php?CategoryID=" .$row['id']. "'> Edit </a></td>";
echo "</tr> </table>";
}
?>
Nothing is happening here. Please suggest
You will find I have added the session_start() at the very top of the page. I have also removed the session_start() call later in the page. This page should work fine.
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
<title>Welcome</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#nav li').hover(
function () {
//show its submenu
$('ul', this).slideDown(100);
},
function () {
//hide its submenu
$('ul', this).slideUp(100);
}
);
});
</script>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="header"> </td>
</tr>
<tr>
<td class="menu"><table align="center" cellpadding="0" cellspacing="0" width="80%">
<tr>
<td>
<ul id="nav">
<li><a href="#">Catalog</a>
<ul><li><a href="#">Products</a></li>
<li><a href="#">Bulk Upload</a></li>
</ul>
<div class="clear"></div>
</li>
<li><a href="#">Purchase </a>
</li>
<li><a href="#">Customer Service</a>
<ul>
<li><a href="#">Contact Us</a></li>
<li><a href="#">CS Panel</a></li>
</ul>
<div class="clear"></div>
</li>
<li><a href="#">All Reports</a></li>
<li><a href="#">Configuration</a>
<ul> <li><a href="#">Look and Feel </a></li>
<li><a href="#">Business Details</a></li>
<li><a href="#">CS Details</a></li>
<li><a href="#">Emaqil Template</a></li>
<li><a href="#">Domain and Analytics</a></li>
<li><a href="#">Courier</a></li>
</ul>
<div class="clear"></div>
</li>
<li><a href="#">Accounts</a>
<ul><li><a href="#">Ledgers</a></li>
<li><a href="#">Account Details</a></li>
</ul>
<div class="clear"></div></li>
</ul></td></tr></table></td>
</tr>
<tr>
<td valign="top"><table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td width="22%" height="327" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td> </td>
</tr>
<tr>
<td height="45"><strong>-> Products</strong></td>
</tr>
<tr>
<td height="61"><strong>-> Categories</strong></td>
</tr>
<tr>
<td height="48"><strong>-> Sub Categories</strong></td>
</tr>
</table></td>
<td width="78%" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td> </td>
</tr>
<tr>
<td>
<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="26%"> </td>
<td width="74%"><h2>Manage Categories</h2></td>
</tr>
</table></td>
</tr>
<tr>
<td height="30">
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
<table width="49%" align="center" cellpadding="0" cellspacing="0">
<tr><td>
<?php
if (isset($_SESSION['error']))
{
echo "<span id="error"><p>" . $_SESSION['error'] . "</p></span>";
unset($_SESSION['error']);
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<p>
<label class="style4">Category Name</label>
<input type="text" name="categoryname" /><br /><br />
<label class="style4">Category Image</label>
<input type="file" name="image" /><br />
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<br />
<br />
<input type="submit" id="submit" value="UPLOAD" />
</p>
</form>
<?php
require("includes/conn.php");
function is_valid_type($file)
{
$valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif", "image/png");
if (in_array($file['type'], $valid_types))
return 1;
return 0;
}
function showContents($array)
{
echo "<pre>";
print_r($array);
echo "</pre>";
}
$TARGET_PATH = "images/category";
$cname = $_POST['categoryname'];
$image = $_FILES['image'];
$cname = mysql_real_escape_string($cname);
$image['name'] = mysql_real_escape_string($image['name']);
$TARGET_PATH .= $image['name'];
if ( $cname == "" || $image['name'] == "" )
{
$_SESSION['error'] = "All fields are required";
header("Location: managecategories.php");
exit;
}
if (!is_valid_type($image))
{
$_SESSION['error'] = "You must upload a jpeg, gif, or bmp";
header("Location: managecategories.php");
exit;
}
if (file_exists($TARGET_PATH))
{
$_SESSION['error'] = "A file with that name already exists";
header("Location: managecategories.php");
exit;
}
if (move_uploaded_file($image['tmp_name'], $TARGET_PATH))
{
$sql = "insert into Categories (CategoryName, FileName) values ('$cname', '" . $image['name'] . "')";
$result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());
header("Location: mangaecategories.php");
exit;
}
else
{
$_SESSION['error'] = "Could not upload file. Check read/write persmissions on the directory";
header("Location: mangagecategories.php");
exit;
}
?>
这篇关于故障排除“警告:session_start():无法发送会话缓存限制器 - 标头已发送"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!