Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662

    Errore di reindirizzamento...

    Ciao a tutti... è tanto che non creivo quì, ma mi sta succedendo qualcosa che non mi spiego e a cui non arrivo a capo....

    E' una pagina contatti con form mep invio messaggi email che utilizza phpmailer e che fa un controllo, se il controllo da errori torna a page=contatti.

    L'errore in questione è questo:

    Warning: Cannot modify header information - headers already sent by (output started at /home/n2434rrt/public_html/includes/headinfo.php:4) in /home/n2434rrt/public_html/pages/contatti.php on line 39

    ...ora, alla linea 4 di headinfo.php c'è questo pezzo di codice:

    <?php
    session_start();
    include("includes/lang.php");
    ?>

    mentre alla linea 39 di contatti.php c'è il reindirizzamento:

    header("Location: index_new.php?page=contatti");
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    La funzione header() non deve essere preceduta da alcun output, altrimenti non funziona.

    L'output non deve necessariamente essere generato dalla stessa pagina in cui è inserita la funzione, può anche essere generato dalla pagina in cui il file php è incluso.

    Dal sito di PHP riguardo la funziona header()
    Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

  3. #3
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    (???) Ma come... su un'altro sito mi funziona!

    Riporto di seguito il codice php della pagina contatti (che viene inclusa nell'index):

    codice:
    <?php
    					
    					if($_GET['knt']=="sendmail"){
    						
    						if(empty($_POST['nome'])){
    							$_SESSION['report_nome']=1;
    							$er_nome=1;
    						}
    						
    						if(empty($_POST['email'])){
    							$_SESSION['report_email1']=1;
    							$er_mail=1;
    						}elseif(!ereg("^[a-zA-Z0-9][_\.a-zA-Z0-9-]+@([a-zA-Z0-9][0-9A-Za-z-]+\.)+([A-Za-z]{2,4})",$_POST['email'])){
    							$_SESSION['report_email2']=1;
    							$er_mail=2;
    						}
    						
    						if(empty($_POST['messaggio'])){
    							$_SESSION['report_messaggio']=1;
    							$er_messaggio=1;
    						}					
    						
    						if($er_nome==1||$er_mail==1||$er_mail==2||$er_messaggio==1){
    							$_SESSION['refill_nome']=$_POST['nome'];
    							$_SESSION['refill_email']=$_POST['email'];
    							$_SESSION['refill_telefono']=$_POST['telefono'];
    							$_SESSION['refill_messaggio']=$_POST['messaggio'];
    							header("Location: index_new.php");
    						}else{
    														
    						
    						
    						
    						
    						
    						
    						include_once('includes/class.phpmailer.php');
    							
    							$ip = $_SERVER[REMOTE_ADDR];
    							$messaggio = nl2br($_POST[messaggio]);
    							
    							$mail = new PHPMailer();
    							$mail->CharSet = 'UTF-8';
    							
    							$mail->From = $_POST['email'];
    							$mail->FromName = $_POST['nome'];
    							$mail->Subject = "www.n2m4u.ch";
    							$html_body = '
    							<html>
    								<body style="font-family:Arial, Helvetica, sans-serif;margin:20px 0 0 20px">
    									<div style="font-weight:bold;font-size:12px;">
    										Nome:
    									</div>
    									<div style="margin-bottom:10px;">
    										'.$_POST[nome].'
    									</div>
    									<div style="font-weight:bold;font-size:12px;">
    										e-mail:
    									</div>
    									<div style="margin-bottom:10px;">
    										'.$_POST[email].'
    									</div>
    									<div style="font-weight:bold;font-size:12px;">
    										Telefono:
    									</div>
    									<div style="margin-bottom:10px;">
    										'.$_POST[telefono].'
    									</div>
    									<div style="font-weight:bold;font-size:12px;">
    										Messaggio:
    									</div>
    									<div style="margin-bottom:20px;padding:10px;border-left:1px solid #999">
    										'.$messaggio.'
    									</div>
    									<div style="font-size:10px;color:#aaaaaa;">Indirizzo IP del mittente: <span style="font-weight:bold">'.$ip.'</span></div>
    								</body>
    							</html>
    							';
    							
    							$mail->MsgHTML($html_body);
    							$mail->AddAddress('marco.delucia@n2m4u.ch');
    							$mail->Send();
    							
    						
    							echo"
    								<div id=\"sendMailOkCont\">
    									<div id=\"sendMailOkImg\">
    										<img src=\"images/v1.png\" />	
    									</div>
    									<div id=\"sendMailOkTxt\">
    										Grazie per avermi contattato.
    
    										Il tuo messaggio è stato recapitato con successo,
    										ti risponderemo il prima possibile.
    
    
    										N2M4U
    									</div>
    								</div>
    							";
    						
    													
    												
    											
    										
    									
    								
    							
    						}
    						
    					}else{
    						
    						
    						echo "
    							<form action=\"?page=contatti&knt=sendmail\" method=\"POST\">
    								<div class=\"descForm\">
    									nome*";
    									
    									if($_SESSION['report_nome']==1){
    										echo"
    											<span class=\"errorSend\">
    												Non hai inserito il tuo nome.
    											</span>
    										";
    										$errfield_nome="errfield";
    									}
    									
    						echo	 "
    								</div>
    								<input class=\"inputForm $errfield_nome\" type=\"text\" name=\"nome\" value=\"$_SESSION[refill_nome]\" />
    								<div class=\"descForm\">
    									e-mail*";
    									
    									if($_SESSION['report_email1']==1){
    										echo"
    											<span class=\"errorSend\">
    												Non hai inserito il tuo indirizzo e-mail.
    											</span>
    										";
    										$errfield_email1="errfield";
    									}
    									
    									if($_SESSION['report_email2']==1){
    										echo"
    											<span class=\"errorSend\">
    												L'indirizzo e-mail che hai inserito non è corretto.
    											</span>
    										";
    										$errfield_email2="errfield";
    									}
    									
    						echo	 "
    								</div>
    								<input class=\"inputForm $errfield_email1 $errfield_email2\" type=\"text\" name=\"email\" value=\"$_SESSION[refill_email]\" />
    								<div class=\"descForm\">
    									telefono
    								</div>
    								<input class=\"inputForm\" type=\"text\" name=\"telefono\" value=\"$_SESSION[refill_telefono]\" />
    								<div class=\"descForm\">
    									messaggio*";
    									
    									if($_SESSION['report_messaggio']==1){
    										echo"
    											<span class=\"errorSend\">
    												Non hai scritto il tuo messaggio.
    											</span>
    										";
    										$errfield_messaggio="errfield";
    									}
    									
    						echo	 "
    								</div>
    								<textarea class=\"txtForm $errfield_messaggio\" name=\"messaggio\">$_SESSION[refill_messaggio]</textarea>
    								<div class=\"sendForm\">
    									<input class=\"buttonSend\" type=\"submit\" name=\"Submit\" value=\"Invia\">
    								</div>
    							</form>
    							<div class=\"asterixContatti\">
    								* campi obbligatori
    							</div>
    						";
    						
    						$_SESSION['report_nome']="";
    						$_SESSION['report_email1']="";
    						$_SESSION['report_email2']="";
    						$_SESSION['report_messaggio']="";
    						$_SESSION['refill_nome']="";
    						$_SESSION['refill_email']="";
    						$_SESSION['refill_telefono']="";
    						$_SESSION['refill_messaggio']="";
    						
    					}
    	
    				?>

    Mentre di seguito c'è l'include headerinfo.php:

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    	<head>
    		<?php
    			session_start();
    			include("includes/lang.php");
            ?> 
    		
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<title>
    			<?php
    				$title = "N2M4U";
    				
    				if($_GET['page']==prodotti){
    					echo $title." | prodotti";
    				}elseif($_GET['page']==servizi){
    					echo $title." | servizi";
    				}elseif($_GET['page']==azienda){
    					echo $title." | azienda";
    				}elseif($_GET['page']==contatti){
    					echo $title." | contatti";
    				}else{
    					echo $title;
    				}
    			?>
    		</title>
    		<link rel="stylesheet" href="css/monitor.css" type="text/css" />
    
    		<script language="javascript">AC_FL_RunContent = 0;</script>
    		<script src="js/AC_RunActiveContent.js" language="javascript"></script>
    		
    		<script src="js/jquery-1.4.4.min.js" type="text/javascript"></script>
    		
    		<link rel="stylesheet" href="css/prettyPhoto.css" type="text/css" media="screen" title="prettyPhoto main stylesheet" charset="utf-8" />
    		<script src="js/jquery.prettyPhoto.js" type="text/javascript" charset="utf-8"></script>
    		
    		
    		<link rel="stylesheet" href="css/videobox.css" type="text/css" media="screen" />
    		
    		
    		<link rel="shortcut icon" href="http://www.n2m4u.ch/images/favicon.ico">
    
    	</head>
    	<body>

    non capisco... come dicevo su un'altro sito funziona bene (anche se start_session è messo all'inizio del php della pagina contatti)
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Come scritto nella parte che ho citato, anche gli spazi o righe vuote prima della funzione header() sono considerati output, verifica di non averne.

  5. #5
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    niente... ho eliminato tutto il codice php prima del "<?php" che è nella pagina contatti.
    ...tutto tranne <? session_start ?> ovviamente.

    Tutto ciò che c'è prima di header() nella pagina contatti non da output, ma è solo una serie di controlli.

    Ora però l'errore me lo da nell'index, all'include della pagina contatti!!!!

    Non ci sto capendo una cippa... ma perchè su un sito va e quà mi fa tutte ste pippe... uff....
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  6. #6
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Incredibile...
    Ho richiamato la pagina senza farla includere da nessuna parte, tipo così:
    www.sitonzolo.it/pages/contatti.php
    e mi da questo errore:

    Warning: Cannot modify header information - headers already sent by (output started at /home/n2434rrt/public_html/pages/contatti.php:12) in /home/n2434rrt/public_html/pages/contatti.php on line 39

    contatti.php:12 corrisponde all'inizio del codice php della pagina contatti, ma a parte i controlli non ci sono output (la pagina è sopra)

    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Originariamente inviato da bANART
    ...
    contatti.php:12 corrisponde all'inizio del codice php della pagina contatti, ma a parte i controlli non ci sono output (la pagina è sopra)
    E questa pagina viene mostrata? Se si, quello è l'output che da fastidio.

  8. #8
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Guarda, ho tolto proprio tutto tutto quello che c'è prima dell'inizio della parte php ed ho richiamato semplicemente la pagina contatti (www.xxxxx.it/pages/contatti.php)
    Quindi il documento inizia proprio con <?php

    ...e guarda un po:

    Warning: Cannot modify header information - headers already sent by (output started at /home/n2434rrt/public_html/pages/contatti.php:1) in /home/n2434rrt/public_html/pages/contatti.php on line 29
    Codice PHP:
    <?php

        
    if($_GET['knt']=="sendmail"){
            
            if(empty(
    $_POST['nome'])){
                
    $_SESSION['report_nome']=1;
                
    $er_nome=1;
            }
            
            if(empty(
    $_POST['email'])){
                
    $_SESSION['report_email1']=1;
                
    $er_mail=1;
            }elseif(!
    ereg("^[a-zA-Z0-9][_\.a-zA-Z0-9-]+@([a-zA-Z0-9][0-9A-Za-z-]+\.)+([A-Za-z]{2,4})",$_POST['email'])){
                
    $_SESSION['report_email2']=1;
                
    $er_mail=2;
            }
            
            if(empty(
    $_POST['messaggio'])){
                
    $_SESSION['report_messaggio']=1;
                
    $er_messaggio=1;
            }                    
            
            if(
    $er_nome==1||$er_mail==1||$er_mail==2||$er_messaggio==1){
                
    $_SESSION['refill_nome']=$_POST['nome'];
                
    $_SESSION['refill_email']=$_POST['email'];
                
    $_SESSION['refill_telefono']=$_POST['telefono'];
                
    $_SESSION['refill_messaggio']=$_POST['messaggio'];
                
    header("location: ../index_new.php?page=contatti");
            }else{
    ...
    ecc..
    ..
    ecc..
    .
    ecc..
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  9. #9
    Prima del tag <?php c'è uno spazio oppure righe vuote?

    i
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    no, sono righe vuote... (solo degli accapo...)
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.