redirection vers une page, erreur Cannot modify header

Eléphanteau du PHP | 17 Messages

13 déc. 2010, 17:16

Bonjour,

je fais une redirection vers une page lorsqu'un formulaire a été envoyé par mail.
j'obtiens l'erreur :

Code : Tout sélectionner

Warning: Cannot modify header information - headers already sent by
voici le code :
if (@mail($courrielBoutique,$sujetBoutique,$messageBoutique,$fromB)){
			// mail envoyé
			unset($_SESSION["panier"]); 
			header("Location:validation.php");
			
			}
			else {
			// erreur lors de l'envoi du mail
			header("Location:erreur.php");
			}

Je ne comprends pas , j'ai vu sur d'autre forum que c'est bien header() pour la redirection
MSI GT725, Vista apparence Windows Standart, Mozilla...

Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"

ViPHP
ViPHP | 5462 Messages

13 déc. 2010, 17:18

montre l'erreur complete

Eléphanteau du PHP | 17 Messages

13 déc. 2010, 17:24

Warning: Cannot modify header information - headers already sent by (output started at /mnt/146/sda/0/f/gssk/inc/tete.inc.php:6) in /mnt/146/sda/0/f/gssk/commande.php on line 645
MSI GT725, Vista apparence Windows Standart, Mozilla...

Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"

Eléphant du PHP | 50 Messages

13 déc. 2010, 17:35

Et tu n'as aucun code HTML (espace compris) avant ton header ?

Eléphanteau du PHP | 17 Messages

13 déc. 2010, 17:39

si si y a du code html/php avant le header en fait y a le formulaire etc ..
voici la page :
<?php
session_start();
if(!isset($_SESSION["panier"])){
		header("Location:index.php");
	}
require_once('inc/connexion_base.inc.php'); // connexion à la base de données
$classP="class='active'";
$cryptinstall="cryptographp.fct.php";
include $cryptinstall;   


// Valeur par d&eacute;faut. Prendra la valeur "ok" s'il n'y a pas d'erreur
..
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
....

// --- test de la validit&eacute; des champs saisis ---
....
include_once("inc/tete.inc.php");
?>
...formulaire etc..

<?php
.......
.....

			if (@mail($courrielBoutique,$sujetBoutique,$messageBoutique,$fromB)){
			// mail envoy&eacute;
			unset($_SESSION["panier"]); 
			header("Location:validation.php");
			
			}
			else {
			// erreur lors de l'envoi du mail
			header("Location:erreur.php");
			}
			
	// destruction du panier devenu inutile
}

}//fin si else
include_once("inc/footer.inc.php");

?>

MSI GT725, Vista apparence Windows Standart, Mozilla...

Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"

Eléphant du PHP | 50 Messages

13 déc. 2010, 17:58

N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé
cf http://php.net/manual/fr/function.header.php

Eléphanteau du PHP | 17 Messages

13 déc. 2010, 18:06

hmm je vois merci,
et n'y a t il pas d'autre moyen ?
MSI GT725, Vista apparence Windows Standart, Mozilla...

Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"

Eléphant du PHP | 50 Messages

13 déc. 2010, 18:24

Soit Mettre le code de traitement de ton action en haut de fichier avant HTML
Soit mettre ton action dans un autre fichier (à spécifier dans ton form)

Eléphanteau du PHP | 17 Messages

13 déc. 2010, 18:45

Je te remercie, je vais essayer
MSI GT725, Vista apparence Windows Standart, Mozilla...

Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"