Nouveau sur le forum ? Voici votre case départ pour bien débuter.

Liens contextuels :

Auteur
fanny742
# 28 Apr 2008 - 05:20:37
Citer
56 Posts
Bonjour,
Je fabrique un formulaire d’inscription avec l’envoi d’un mail en php mais j’ai l’erreur suivante :

Warning: Cannot modify header information - headers already sent by (output started at ..\inscription-commande.php:31)
in ..\inscription-commande.php on line 125

Les donnes sont bien enregistrees dans la bdd et le mail est bien envoyé mais la rediredirection $insertGoTo = "../inscription-a-valider.php"; ne marche pas.Si quelqu'un a une idee, je bloque ohwell

<?php require_once(../connexion.php'); ?>
<?php
ligne 31 if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) :
mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
...
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "formulaire_inscription")) {
$insertSQL = sprintf("INSERT INTO clients (civilite, nom, prenom, adresse1, adresse2, ville, cp, tel, email, pass)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, MD5(%s))",
GetSQLValueString($_POST['civilite'], "text"),
...

mysql_select_db($database_connexion, $connexion);
$Result1 = mysql_query($insertSQL, $connexion) or die(mysql_error());

$insertGoTo = "../inscription-a-valider.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
ligne 125 header(sprintf("Location: %s", $insertGoTo));
}
?>
if($_POST){
//Récupération des données du formulaire----------------------------
$emaile = stripslashes(htmlentities($_POST["mail"]));
$motdepasse = stripslashes(htmlentities($_POST["mot_de_passe"]));
//------------------------------------------------------------------


$from = "test@hotmail.fr";
$reply = $from;
$to = $emaile;//Mettez l'email de destination ici

//Mise en forme du contenu au format HTML-----------------------
$objet = "test
$contenu = "test : ";
$contenu .= "<br /> email: ".$emaile;
$contenu .= "<br /> passe: ".$motdepasse;
$contenu .= "<br /> Message: <br />";
$contenu .= "<a href='http://../confirmation.php?email=$emaile'>cliquez ici</a>";
//--------------------------------------------------------------

//Entêtes de formatage de l'email en mode HTML------------------
$headers = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
$headers .= 'From: '.$from."\n";
$reply = $headers."Reply-to: ".$reply."\n";
//---------------------------------------------------------------

//Déclenchement de l'email et reroutage vers une autre page-----
mail($to, $objet, $contenu, $reply);

}
?>


<form action="<?php echo $editFormAction; ?>" method="POST" name="formulaire_inscription" id="formulaire_inscription"
<input name="mail" type="text" class="input" id="mail" size="30" />
...
<input name="Submit" type="image" class="bouton" id="Submit" src= />
</form>

Modifié par fanny742 (30 Apr 2008 - 16:36)

^
Heyoan
# 28 Apr 2008 - 06:52:44
Citer
Un p'tit Kiwiz Coca ?
1664 Posts
Salut fanny742,

Ce message t'indique que du code html a déjà été écrit avant le header alors que c'est interdit cligne .

D'ailleurs si la ligne en question est bien la 125 il y a de grandes chances pour qu'un DOCTYPE et d'autres balises (html, head, etc...) soit effectivement déjà envoyées au navigateur.

La solution consiste à déplacer ce code PHP avant le <!DOCTYPE...

A+

Un être en tant qu'être ne peut-il être autre qu'il n'est s'il n'exprime pas lui même son être ?

http://www.heyoan.com 
^
steph29
# 28 Apr 2008 - 10:59:49
Citer
19 Posts

<?php require_once(../connexion.php'); ?>
<?php


la tu a deja des caracteres qui sont envoyes au navigateur (au moins un retour chariot)
(la fonction header n'accepte aucun caractere envoye au navigateur avant elle)
donc supprime deja ceci:
?>
<?php


^
fanny742
# 30 Apr 2008 - 10:24:40
Citer
56 Posts
merci pour votre aide.

Mais je ne comprends pas, mon code php est place avant le
<!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"><!-- InstanceBegin template="/Templates/modele.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


si ce n'est pas trop demander peux tu me conseiller pour l'organisation de mon code, c'est tres important. J'arrive au bout de mon site est je reste bloqué sur cette erreur depuis plusieurs jours decu

merci pour tout cligne

^
fanny742
# 30 Apr 2008 - 15:35:55
Citer
56 Posts
Desole, je suis novice ohwell

J'ai fait quelques modifications en enlevant le code html.
Je n'ai plus de probleme de header mais le lien inseré dans mon mess ne fonctionne pas correctement.
Le lien se comporte differamment en fonction des messageries.
Sur orange l'adresse email $destinataire inserée dans le lien http://......./validation-inscription.php?email=$destinataire est interpreté comme un lien.

Est il possible d'eviter ca avec des caracteres speciaux ou autres ?

if($_POST){
$destinataire=$_POST['mail'];
$reply = $from;
$objet="test";
$message = "Vous venez ...:";
$message .= $_POST['mot_de_passe'] . "\n";
$message .= "http://......./validation-inscription.php?email=$destinataire";
$from="From: test@hotmail.fr";
//Entêtes de formatage de l'email en mode HTML------------------
$headers = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
$headers .= 'From: '.$from."\n";
$reply = $headers."Reply-to: ".$reply."\n";
//---------------------------------------------------------------
mail($destinataire,$objet,$message,$from,$reply);
}

Modifié par fanny742 (30 Apr 2008 - 15:37)

^
skywalk3r
# 30 Apr 2008 - 15:46:52
Citer
"Je suis son fils!!!"
279 Posts
Tu peux essayer avec la fonction php "urlencode".

Et bien sur "urldecode" pour récupérer la chaine d'origine.

$message .= "http://.............../validation-inscription.php?email=".urlencode($destinataire);

Modifié par skywalk3r (30 Apr 2008 - 15:49)

C'est l'taaaaalent ça M'sieur dame!!!

http://www.watch-me.fr 
^
fanny742
# 30 Apr 2008 - 16:36:14
Citer
56 Posts
merci pour tout !

ca marche, c'est cool biggrin
@ +

^

référencesLes références web : openweb.eu.org - opquast.com - webmaster-hub.com - webrankinfo.com - salemioche.net - web-pour-tous.org - webonorme.org

Nos partenaires : Editions Eyrolles - Location vacances France - Location vacances Europe

Nikozen : Hébergement - Réalisation : Alsacreations.fr

Powered by Phedio v3.8 beta © dew
Contacter l'administrateur - 11.7 ms - Charte