Problemen oplossen “Waarschuwing: session_start(): kan sessiecachebegrenzer niet verzenden – headers al verzonden”

ik krijg Waarschuwing: session_start() [function.session-start]: kan sessiecachebegrenzer niet verzenden – headers zijn al verzonden (uitvoer gestart bij-fout

Als ik formuliergegevens verzend naar een ander bestand voor verwerking, werkt het. Maar als ik formuliergegevens naar dezelfde pagina verzend, krijg ik deze foutmelding.

suggereer alsjeblieft

<!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">&nbsp;</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>&nbsp;</td>
                </tr>
              <tr>
                <td height="45"><strong>-&gt; Products</strong></td>
                </tr>
              <tr>
                <td height="61"><strong>-&gt; Categories</strong></td>
                </tr>
              <tr>
                <td height="48"><strong>-&gt; Sub Categories</strong></td>
                </tr>
            </table></td>
            <td width="78%" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
              <tr>
                <td>&nbsp;</td>
                </tr>
              <tr>
                <td>
                  <table width="90%" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                      <td width="26%">&nbsp;</td>
                      <td width="74%"><h2>Manage Categories</h2></td>
                    </tr>
                  </table></td>
                </tr>
              <tr>
                <td height="30">&nbsp;
                </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>
                   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="text" name="categoryname" /><br /><br />
                    <label class="style4">Category Image</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <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;
}
?> 

Hier is de code voor 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>";
                }
            ?>

Hier gebeurt niets. Stel alsjeblieft voor


Antwoord 1, autoriteit 100%

Je zult zien dat ik de session_start() helemaal bovenaan de pagina heb toegevoegd. Ik heb ook de aanroep session_start() later op de pagina verwijderd. Deze pagina zou goed moeten werken.

<?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">&nbsp;</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>&nbsp;</td>
                </tr>
              <tr>
                <td height="45"><strong>-&gt; Products</strong></td>
                </tr>
              <tr>
                <td height="61"><strong>-&gt; Categories</strong></td>
                </tr>
              <tr>
                <td height="48"><strong>-&gt; Sub Categories</strong></td>
                </tr>
            </table></td>
            <td width="78%" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
              <tr>
                <td>&nbsp;</td>
                </tr>
              <tr>
                <td>
                  <table width="90%" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                      <td width="26%">&nbsp;</td>
                      <td width="74%"><h2>Manage Categories</h2></td>
                    </tr>
                  </table></td>
                </tr>
              <tr>
                <td height="30">&nbsp;
                </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>
                   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="text" name="categoryname" /><br /><br />
                    <label class="style4">Category Image</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <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;
}
?> 

Antwoord 2, autoriteit 62%

Het antwoord staat hierboven van Ross.

Ten eerste, als u session_start() als de eerste regel code plaatst, betekent dit dat u geen objecten correct kunt deserialiseren in sessievariabelen.

De reden voor het krijgen van dit probleem is dat 99% waarschijnlijk spaties aan het einde van je include-bestanden zijn (ja – ik weet dat het onwaarschijnlijk klinkt, maar probeer het gewoon). Het gewraakte bestand staat in de foutmelding. Ik wilde een back-up maken van het antwoord van Ross, wat voor mij werkte, maar deze site is contra-intuïtief.

NEGEER de onzinantwoorden. Verwijder de volgspaties, nieuwe regels enz… en alles komt goed. ROSS weet waar hij het over heeft.
Session_start() bovenaan je bestand plaatsen werkt WEL, maar het is niet de juiste oplossing.


Antwoord 3, autoriteit 56%

Ik had hetzelfde probleem, maar mijn oplossing was niet zo voor de hand liggend als de voorgestelde. Het bleek dat mijn php-bestand in UTF-8 was geschreven, wat voor problemen zorgde. Ik heb de inhoud van het hele bestand gekopieerd en geplakt in een nieuw php-bestand (Notepad++ vertelt me dat dit in ANSI is geschreven in plaats van UTF-8) en nu werkt het feilloos.


Antwoord 4, autoriteit 38%

vervang session_start();door @session_start();in uw code


Antwoord 5, autoriteit 31%

Dit zou je probleem moeten oplossen. session_start() moet worden aangeroepen voordat een teken wordt teruggestuurd naar de browser. In uw geval werden HTML en lege regels verzonden voordat u session_start() aanriep. Documentatie hier.

Om uw vraag over waarom het werkt wanneer u naar een andere pagina verzendt verder uit te leggen, gebruikt die pagina ofwel geen session_start() of roept session_start() aan voordat u enig teken terugstuurt naar de client! Deze pagina aan de andere kant riep session_start() veel later aan toen er veel HTML naar de client (browser) werd teruggestuurd.

De betere manier om te coderen is om een gemeenschappelijk headerbestand te hebben dat verbinding maakt met de MySQL-database, session_start() aanroept en andere veelvoorkomende dingen doet voor alle pagina’s en dat bestand bovenaan elke pagina opneemt, zoals hieronder:

include "header.php";

Dit stopt problemen zoals u die heeft en stelt u ook in staat om een gemeenschappelijke set code te hebben om in een project te beheren. Iets waar je zeker over moet nadenken, raad ik je aan na het bekijken van je code.

<?php
session_start();
                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>
                   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="text" name="categoryname" /><br /><br />
                    <label class="style4">Category Image</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <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;
}
?> 

Antwoord 6, autoriteit 25%

gebruik ob_start();voor session_start();bovenaan je pagina, zoals dit

<?php
ob_start();
session_start();

Antwoord 7, autoriteit 25%

Voor anderen die dit tegen kunnen komen – het kan ook voorkomen als iemand achteloos spaties achterlaat in een php include-bestand. Voorbeeld:

<?php 
    require_once('mylib.php');
    session_start();
 ?>

In het bovenstaande geval, als de mylib.php spaties heeft na het sluiten ?> tag, zal dit een fout veroorzaken. Dit kan natuurlijk vervelend worden als je veel bestanden hebt toegevoegd/nodig hebt. Gelukkig vertelt de fout je welk bestand aanstootgevend is.

HTH


Antwoord 8, autoriteit 25%

Over het algemeen treedt deze fout op wanneer we koptekst verzenden na echo of afdrukken. Als deze fout zich voordoet op een specifieke pagina, zorg er dan voor dat die pagina niets weergeeft voordat u start_session() aanroept.

Voorbeeld van onvoorspelbare fout:

<?php //a white-space before <?php also send for output and arise error
session_start();
session_regenerate_id();
//your page content

Nog een voorbeeld:

<?php
includes 'functions.php';
?> <!-- This new line will also arise error -->
<?php
session_start();
session_regenerate_id();
//your page content

Conclusie: voer geen karakter uit voordat de session_start() of header() functies worden aangeroepen, zelfs geen witruimte of nieuwe regel


Antwoord 9, autoriteit 19%

gebruik session_start()bovenaan de pagina.

lees voor meer informatie de link session_start


Antwoord 10, autoriteit 19%

Ik heb een vergelijkbare Warning: session_start(): Cannot send session cache limiter - headers already sentoplossen door gewoon een spatie voor de <?phptag.

Het werkte.


Antwoord 11, autoriteit 12%

Ik had een website die overging van de ene host naar de andere, het leek goed te werken op de oude host, maar een paar pagina’s op de nieuwe host gaven de fout

Waarschuwing: session_start(): Kan sessie niet verzenden cache limiter - headers al verzonden

terwijl ik altijd de

<?php
session_start(); 

bovenaan de pagina geen spaties en niets eerder ingevoegd

het irriteerde me echt dat ik elke pagina bekeek bij het openen van de sessie, en het werkte op sommige pagina’s en doorliep een fout op andere
Ik pakte de pagina’s met de problemen, maakte er een back-up van, maakte nieuwe blanco pagina’s en kopieerde en plakte de code gewoon zoals hij is, opgeslagen en geüpload en boem, probleem opgelost!

dit is iets waar jullie misschien rekening mee moeten houden, het kan de codering van de pagina zijn geweest, of zoiets, ik weet niet precies wat de oorzaak van het probleem is, maar hier is een oplossing om naar te kijken voor het geval jullie een soortgelijk probleem

proost!


Antwoord 12, autoriteit 12%

Vervang hiervoor gewoon session_start.

if (!session_id() && !headers_sent()) {
   session_start();
}  

Je kunt het overal neerzetten, zelfs aan het einde 🙂
Werkt prima voor mij. $_SESSION is ook toegankelijk.


Antwoord 13, autoriteit 6%

In mijn geval moest ik de bestandscodering instellen zonder stuklijst.


Antwoord 14

Dit begon voor mij toen ik mijn site omleidde naar https:// (voor SSL-certificaat). Vanuit mijn ervaring met dit probleem moest de session_start()zijn voordat de browser HTML-code zag. Voor mijn voorbeeld gebruikte ik session_start()in nav.php om de opties van de navigatiebalk te bepalen. Uiteindelijk plaatste ik session_start()direct na de php-opmerkingen in het index.php-bestand en elke pagina die nav.php aanriep. Ik kon de php-opmerkingen vóór session_start()behouden, maar ik kon de HTML-opmerkingen boven de php niet behouden.


Antwoord 15

Controleer eventuele extra ruimte voor de php-tag.

Other episodes