messaggio di errore header

benfy85

Nuovo Utente
15 Feb 2009
14
0
0
Ciao,
torno a rompere le scatole, ma vorrei finirla con sto php al + presto...
stavo creando dei cookie che contengono dei prodotti e uno che contiene il numero dei prodotti...
PHP:
<?php

session_start();
      
//prendo i valori del form della pagina database.php per creare il cookie
$vino = $_POST["idvino"];
$quant = $_POST["quantita"];
$partita = $_POST["partita"];


//creo una stringa per il cookie 
$a_cookie = $vino."-".$quant."-".$partita; 
$expire = time()+ 86400; //varibile che definisce la scadenza ad un giorno del cookie

?>
<html>
        <head>
          <title>Online Wine Shop</title>
          <link href="default.css" rel="stylesheet" type="text/css" />
        </head>
        <body>
          <div id="header">
            <div id="logo"><a href="index.php"><img src="images/ows.gif" alt="Wine Shop Online"/></a>
            </div>
          <div id="menu">
             <a href="index.php">Home</a>
             <a href="carrello.php">Carrello</a>
             <a href="registra.php">Registrati</a>
             <a href="login.php">Login</a>
             <a href="logout.php">Logout</a>

<?php        if(IsSet($_SESSION['utente'])) 
        {
            echo "<a href=\"logout.php\">Logout</a>
                  <h3>Benvenuto $utente </h3>";
        }      
?>        
          </div>
              </div>
              <div id=\"page\">
              <div id=\"content\">  

<?php
if(isset($_COOKIE["cont"]))     //se esiste il cookie cont
{             
  foreach($_COOKIE as $key => $value)     //scorro i cookie per ottenere quello con chiave + alta
  {
    if(is_numeric($key))      //guardo solo quelli con chiave numerica
    {
      $q = array();   //
      $cok = $value;  //stringa del cookie
      for($j=0; $j<=2; $j++)
      {         
         $pos = strpos($cok, "-");                       //trova la posizione del carattere speciale
         $q[] = substr($cok, 0, $pos);                   //prende la stringa da 0 al carattere speciale e lo mette nell'array
         $cok = substr($cok, $pos+1, strlen($cok));   
      } 
            
      if($q[0]!= $vino)
      {
        $iadd = $_COOKIE["cont"];
        $iadd++;
        setcookie($iadd, $a_cookie, $expire);
        setcookie("cont", $iadd, $expire);    
        echo "<p> Il prodotto e' stato aggiunto correttamente nel carrello. </p>";
      }
      else 
      {
        echo "<p>Il prodotto e' gia' presente nel carrello.</p>";
      }
    }
  } 
}
else 
{
  $iadd = 1;
  setcookie($iadd, $a_cookie, $expire);	
  setcookie("cont", $iadd, $expire);
  echo "<p> Il prodotto e' stato aggiunto correttamente nel carrello. </p>";
}
       
?>
      <p>Se desideri effettuare un'altra ricerca, clicca su: <a href="ricerca.php"><button>Ricerca</button></a></p>
      <p>Altrimenti, se vuoi completare l'ordine, clicca su: <a href="carrello.php"><button>Carrello</button></a></p>
     </div>
     </div>
  </body>
</html>

e questo è il messaggio di errore sulle righe 77 e 78
PHP:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\add_prod.php:27) in C:\xampp\htdocs\add_prod.php on line 77
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
43
Sanremo
L'errore che ti ritorna è abbastanza esplicativo: non è possibile modificare gli HTTP headers dopo aver già iniziato l'output della pagina. La descrizione della funzione setcookie è molto chiara.

In pratica le funzioni riguardanti gli headers (setcookie, header) devono essere richiamate prima di qualunque output, che sia un print, un echo o del codice HTML diretto (come nel tuo caso).

Quindi o sposti la parte dei cookie prima dell'inizio del codice HTML, oppure utilizzi le funzioni per il controllo dell'output.

La prima soluzione è di sicuro la più immediata, ma dare un'occhiata alla seconda possibilità e scoprire una cosa in più non fa certo male.
 

benfy85

Nuovo Utente
15 Feb 2009
14
0
0
ho provato ad usare ob_get_contents come negli esempi, però mi replica l'html 4 volte... come mai?
PHP:
ob_start();
echo "<html>
      <head>
        <meta http-equiv=\"content-type\" content=\"text/html\"; charset=\"utf-8\" />
        <title>Online Wine Shop</title>
        <link href=\"default.css\" rel=\"stylesheet\" type=\"text/css\" />
      </head>

    <body>

 <div id=\"header\">
  	<div id=\"logo\"><a href=\"index.php\"><img src=\"images/ows.gif\" alt=\"Wine Shop Online\"/></a>
    </div>
   		<div id=\"menu\">
       	<a href=\"index.php\">Home</a>
       	<a href=\"carrello.php\">Carrello</a>
        <a href=\"registra.php\">Registrati</a>
        <a href=\"login.php\">Login</a>";

$out1 = ob_get_contents();
 
              if(IsSet($_SESSION['utente'])) 
              {
                  echo "<a href=\"logout.php\">Logout</a>
                        <h3>Benvenuto $utente </h3>";
              }
$out2 = ob_get_contents();  

echo "</div>
 </div>
  <div id=\"page\">
        <div id=\"content\">";
        
$out3 = ob_get_contents(); 

var_dump($out1, $out2, $out3);

tutto questa parte è al posto della parte solo in html.
Gli errori di prima non ci sono +, ma mi replica la pagina 4 volte, con delle scritte "string(560)"..
e oltretutto non so se nell'oggetto posso mettere anche del codice in php come quel controllo dell'utente in sessione..
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Dopo che utilizzi ob_start() ricordati di richiamare dopo l'output ob_end_clean() in modo da ripulire il flusso dei dati, diversamente questi continuano a risiedere in memoria.

PHP:
<?php
ob_start();
echo 'blah blah blah';
ob_end_clean();
?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
P [WordPress] Messaggio di errore in file style.css WordPress 0
M Messaggio di errore su pulsante update PHP 0
J Password reset messaggio di successo o di errore PHP 0
L Problema messaggio d'errore -Warning: mysqli_num_rows() expects parameter 1 to be mysqli_ etc etc... PHP 2
P messaggio errore o benvenuto in php PHP 1
B form informazioni - messaggio d'errore PHP 2
nim Messaggio di errore causa session_start PHP 15
G messaggio di errore iscrizione newsletter ASP.NET 2
M Messaggio di errore personalizzato su cliente gia esistente MS Access 2
J Messaggio di errore... ASP.NET 2
R Messaggio apertura sito WordPress 4
I invia inserisci nome utente invia messaggio PHP 0
R Messaggio presentazione Presentati al Forum 0
Cosina Invio messaggio a mailing list su file txt PHP 9
L Messaggio di un novellino Presentati al Forum 2
B Vorrei inserire una finestra con messaggio ad un history.back PHP 16
P Visual Studio VB.NET Visualizzare un messaggio alla scadenza. .NET Framework 0
otto9due [Javascript] Notification - Browser ( messaggio di notifica browser ). Javascript 0
J messaggio di benvenuto Presentati al Forum 0
A [PHP] Invio messaggio a tutti gli iscritti PHP 2
Christian Tosti Grazie MrWebmaster per il gentile messaggio di benvenuto... Presentati al Forum 0
A [PHP] form messaggio di conferma PHP 2
E [Javascript] Messaggio di avvenuto invio mail non visualizzato Javascript 1
B MYSQL-INVIO EMAIL O MESSAGGIO AVVISO MySQL 0
G Grazie per il gentile messaggio di benveuto :) Presentati al Forum 1
V Messaggio di benvenuto Presentati al Forum 2
S Messaggio Specifico dal DB per i duplicati MySQL 1
Creatt Visualizzare un immagine al mopmento di un messaggio di alert Javascript 7
L Aiuto messaggio di stato PHP 1
G [RETRIBUITO] Inserzionisti forum auto 0,40€ a messaggio Offerte e Richieste di Lavoro e/o Collaborazione 2
R problema con messaggio ringraziamento o altro redirect PHP 5
R messaggio di saluto Presentati al Forum 0
E messaggio di conferma dopo inserimento/modifica/cancellazione righe db PHP 10
A [PHP] Utilizzo frameworks html... messaggio eliminato! PHP 0
P messaggio caricamento in corso Javascript 4
M Messaggio di presentazione Presentati al Forum 1
felino Contact Form 7: calendario e formattazione messaggio WordPress 0
A Prezzo dinamico carrello e messaggio cancellazione Javascript 1
D Problema modulo invio messaggio da sito web PHP 7
A Problema invio messaggio col form PHP 1
felino Contact Form 7: messaggio di conferma sotto il modulo? WordPress 1
Shyson Aggiornare pagina quando c'è un nuovo messaggio PHP 123
M adsmanager e messaggio di verifica email Joomla 0
M messaggio visualizzato in una finestra Javascript 4
R aiuto messaggio vocale phpBB 0
Z Personalizzare il messaggio di avviso sul forum CMS (Content Management System) 3
S Problema con Guesbook: Il messaggio non viene sempre inviato PHP 8
S Form PHP: Messaggio di conferma che compare al caricamento della pagina PHP 11
I Problemi invio messaggio utilizzando la funzione mail() PHP 1
S Stampare un messaggio alla fine del countdown in Javascript Javascript 0

Discussioni simili