Posez votre question Signaler

[PHP] Problème Header

onurb07 13Messages postés 19 juillet 2006Date d'inscription - Dernière réponse le 19 déc. 2008 à 11:40
Bonjour à tous,

J'ai une fonction qui fait l'envoi de mail. J'utilise un header pour renvoyer vers une page de remerciement. J'ai vu beaucoup de choses la-dessus sur le net, pourtant je n'arrive pas à résoudre ce problème dans mon code.

Warning: Cannot modify header information - headers already sent by (output started at /mnt/128/free.fr/d/0/proplan/formmail.php:5) in /mnt/128/free.fr/d/0/proplan/formmail.php on line 6


Voici mon code :

<body><?php
Header("Location: http://proplan.free.fr/merci.php");
$TO = "proplan@free.fr";

$h = "From: " . $TO;

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}

mail($TO, $subject, $message, $h);


?>

</body>

Pourriez-vous m'aider ?

Merci à tous
Lire la suite 

[PHP] Problème Header »

6 réponses
Réponse
+0
moins plus
Salut. C'est l'erreur classique des header() : il faut le mettre AVANT tout code HTML, c'est la toute première chose à faire.

Donc ton code c'est plutôt

<? header("location:http://proplan.free.fr/merci.php"); ?>
<HTML>
<HEAD>
....

Ajouter un commentaire
Réponse
+0
moins plus
Moi je comprend pas c'est la meme erreur pourtant mon header est placé avant voici un bout du code source :
<?
function redirect($url)
{
header("location:$url");
}
?>
<html>
<?
$saut="<br/><br/>";
/*formulaire d identification pour administrateur et client*/
echo("<form name=\"formulaire\" action=\"identification.php\" method=\"get\">");
echo("Login :$saut");
echo("<input type=\"text\" name=\"login\"/>$saut");
echo("Mots De Passe :$saut");
echo("<input type=\"password\" name=\"mdp\"/>$saut");
echo("<input type=\"submit\" value=\"validation\"/>");

?>
<?
..... interrogation de la base de donné et recupération des infos
..... verification des infos et enfin la function
if($affiche[0]=="a" || $affiche[0]=="A")
{
$lien="./administration.php";
redirect($lien);

}
else
{
$lien="produits.php";
}
}
else
{
$lien="erreur.php";
}
}
else
{
$lien="erreur.php";
}
}

/*verification de du pseudo*/
}
echo("</form>");
mysql_close($connectServer);

?>
</body>
</html>
Herbert Jonere - 22 août 2007 à 12:39
Non, en fait la fonction "redirect" qui appelle ton header n'est exécutée que bien plus tard, alors que de nombreuses balises html ont déjà été affiché.
Utiliser une fonction pour retarder l'appel de l'header ne marchera pas.
Ajouter un commentaire
Réponse
+0
moins plus
Tu peux peut $etre t'en sortie en "passant" toput le code php avant les balises <html> comme ceci:

SVP utilises les tags php normalisés <?php ?>

<?php
function redirect($url)
{
header("location:$url");
}
//..... interrogation de la base de donné et recupération des infos
//..... verification des infos et enfin la function
if($affiche[0]=="a" || $affiche[0]=="A"){
	$lien="./administration.php";
	redirect($lien);
}else{
	$lien="produits.php";
}

else
{
$lien="erreur.php";
}
}
else
{
$lien="erreur.php";
}
}

/*verification de du pseudo*/
}
?>
<html>
<body>
<?php
$saut="<br/><br/>";
/*formulaire d identification pour administrateur et client*/
echo("<form name=\"formulaire\" action=\"identification.php\" method=\"get\">");
echo("Login :$saut");
echo("<input type=\"text\" name=\"login\"/>$saut");
echo("Mots De Passe :$saut");
echo("<input type=\"password\" name=\"mdp\"/>$saut");
echo("<input type=\"submit\" value=\"validation\"/>");


echo("</form>");
mysql_close($connectServer);

?>
</body>
</html>


sinon tu peux aussi lancer une page php par du Javascript en mettant où tu veux dans ta page, donc dans des test if / else

<script language="javascript">document.location.href="ton_script.php"; </script>
Ajouter un commentaire
Réponse
+0
moins plus
si tu veux régler le problème des balises HTML APRES le header, tu peux toujours utiliser ob_start(); et ob_end_flush; ça bufferise ton code, autrement dit c'est comme si tu plaçai dans une variable au lieu de faire des echo, avant de l'afficher en dernier, et donc après les header et les session_sart() (cf manuel)
Ajouter un commentaire
Réponse
+0
moins plus
merci

mais, j'ai un autre problème, a partir de la condition if ($nbLigne==0)

voici mon code :

<?php include("session.php");?>


<?php

include('connex.php');

$identifiant = $_POST["identifiant"];
$passwd =$_POST["password"];

$sql = "SELECT login FROM adherant WHERE login = '$identifiant' AND password = '$passwd'";
$result = mysql_query($sql);

while ($ligne = mysql_fetch_array($result))
{
$identifiant = $ligne['login'];
$passwd = $ligne['password'];
}

$nbLigne=mysql_num_rows($result);

if ($nbLigne==0)
{

}
else
{

$_SESSION['identifiant']= $identifiant;
$_SESSION['password']= $passwd;
header("Location: index.php?identifiant=$identifiant");
}

?>
Ajouter un commentaire
Ce document intitulé « [PHP] Problème Header » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook