Dépannage "Attention: session_start (): Impossible d'envoyer le limiteur de cache de session - en-têtes déjà envoyés"
je suis Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at erreur
Si j'envoi des données du formulaire dans un fichier différent pour le traitement, il fonctionne. Mais si je envoyer des données de formulaire sur la même page, il donne cette erreur.
veuillez 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;
}
?>
Voici le code pour l'Affichage
<?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>";
}
?>
Rien ne se passe ici. S'il vous plaît suggérer
source d'informationauteur user1321271
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème, mais ma solution n'était pas aussi évident, comme l'a suggéré. Il s'est avéré que mon fichier php a été écrit en UTF-8, qui a causé les problèmes. J'ai copié/collé le contenu de l'intégralité du fichier dans un nouveau fichier php (Notepad++ me dit que c'est écrit dans la norme ANSI plutôt que de l'UTF-8), et maintenant il fonctionne parfaitement.
La réponse est ci-dessus par Ross.
Tout d'abord, de mettre session_start() en tant que première ligne de code, vous ne deserialise tous les objets correctement dans des variables de session.
La raison d'avoir ce problème, c'est 99% de chances d'être à la traîne d'espaces à la fin de vos fichiers (oui oui, je sais que cela semble peu probable, mais il suffit de l'essayer). Le fichier avi est dans le message d'erreur. J'ai voulu sauvegarder Ross réponse qui a fonctionné pour moi, mais ce site est contre-intuitif.
IGNORER le non-sens des réponses. Supprimer les espaces, retours à la ligne etc... et tout ira bien. ROSS sait de quoi il parle.
Mettre session_start() en haut de votre fichier NE fonctionne pas mais ce n'est pas la bonne solution.
Cela devrait résoudre votre problème. session_start() doit être appelée avant tout caractère est envoyé au navigateur. Dans votre cas, le HTML et les lignes vides ont été envoyés avant l'appel de la fonction session_start(). La Documentation ici.
D'expliquer à votre question de savoir pourquoi cela fonctionne quand vous vous soumettez à une autre page que la page soit ne pas utiliser la fonction session_start() ou les appels de la fonction session_start() avant d'envoyer un retour de caractères pour le client! Cette page sur l'autre main a l'appel de la fonction session_start() beaucoup plus tard, lorsque beaucoup de HTML a été envoyé au client (navigateur).
La meilleure manière de coder est un fichier d'en-tête que les appels se connecte à MySQL de la base de données, les appels à la fonction session_start() et fait d'autres choses en commun pour toutes les pages et inclure ce fichier sur le haut de chaque page comme ci-dessous:
Cela va arrêter de questions comme vous rencontrez que vous permettent également de disposer d'un ensemble commun de code pour gérer l'ensemble du projet. Quelque chose de vraiment pour vous de penser à je dirais après avoir regardé votre code.
utilisation
ob_start();
avantsession_start();
en haut de votre page comme ceciremplacer
session_start();
avec@session_start();
dans votre codeutilisation
session_start()
en haut de la page.pour plus de détails, veuillez lire le lien session_start
Pour les autres qui peuvent courir à travers celui - ci; il peut également se produire si quelqu'un négligemment laisse des espaces à partir de php include de fichier. Exemple:
Dans le cas ci-dessus, si l'mylib.php a des espaces après sa fermeture ?> tag, cela provoquerait une erreur. De toute évidence, cela peut devenir ennuyeux si vous avez inclus/a requis de nombreux fichiers. Heureusement, l'erreur vous indique le fichier qui est fautif.
HTH
Généralement cette erreur survient lorsque nous envoyons tête à la suite d'écho ou d'impression. Si cette erreur survient sur une page spécifique, puis assurez-vous que la page n'est pas en écho à quelque chose avant d'appeler à start_session().
Exemple de l'Imprévisible Erreur:
Un exemple de plus:
Conclusion: Ne pas sortir n'importe quel caractère avant l'appel à la fonction session_start() ou l'en-tête() fonctionne même pas un espace blanc ou de nouvelle ligne
J'ai été en mesure de résoudre des
Warning: session_start(): Cannot send session cache limiter - headers already sent
en supprimant simplement un espace à l'avant de la<?php
tag.Il a travaillé.
Dans mon cas, j'ai dû définir l'encodage du fichier sans BOM.
J'ai eu un site web, un transfert à partir d'un hôte à un autre, il semblait bien fonctionner sur l'ancien hôte, mais quelques pages sur le nouvel hôte a jeté l'erreur
alors que j'ai toujours gardé le
en haut de la page, pas d'espaces et de rien inséré avant
il m'a vraiment ennuyé que je regarde chaque page avec l'ouverture de la session, et il a travaillé sur des pages et courir à travers un bug sur les autres
J'ai pris les pages qui ont des problèmes, sauvegardés, créé de nouvelles pages blanches et simplement copié et collé le code est enregistré et transféré et boom, le problème a disparu!
c'est quelque chose les gars, vous pourriez avoir besoin de considérer, il peut avoir été l'encodage de la page, ou quelque chose, pas sûr que la source exacte du problème, mais ici, c'est un correctif à regarder dans le cas où vous les gars un problème similaire
cheers!
Il suffit de remplacer la fonction session_start avec cette.
Vous pouvez le mettre n'importe où, même à la fin 🙂
Fonctionne très bien pour moi. $_SESSION est accessible.