[RESOLU] probleme signature livre d'or

nicolas.l
Invité n'ayant pas de compte PHPfrance

26 mars 2015, 18:15

bonsoir a tous

voila j'ai un souci avec mon livre d'or

tout va bien quand je rentre les champs du livre d'or mais quand je clique pour valider voici le message qui apparait
Warning: Cannot modify header information - headers already sent by (output started at /mnt/129/sda/2/8/lohez.nicolas/insert_signature.php:1) in /mnt/129/sda/2/8/lohez.nicolas/insert_signature.php on line 26

de quoi cela peut t'il venir

merci a vous

Mammouth du PHP | 688 Messages

26 mars 2015, 18:44

un espace ou caractère en trop à la première ligne de insert_signature.php qui est écrit par le serveur dans la réponse au navigateur, et qui ne permet donc plus de changer les headers ensuite.

nicolas.l
Invité n'ayant pas de compte PHPfrance

26 mars 2015, 18:59

voici mon code source

<?php
if (isset($_POST['go']) && $_POST['go']=='Signer') {

if ((isset($_POST['auteur'])) && (isset($_POST['email'])) && (isset($_POST['message']))) {
// si les 3 variables ne sont pas vides, et si l'adresse E-mail est valide, alors, et seulement dans ce cas, on fera notre insertion dans la base
if ((!empty($_POST['auteur'])) && (!empty($_POST['email'])) && (!empty($_POST['message']))) {
// on verifie le format de l'adresse E-mail saisie
$test_mail = eregi ('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$', $_POST['email']);
if ($test_mail) {
// on se connecte à notre base
// A changer par tes informations : 1° ligne mysql_connect, entre (), c'est d'abord hôte (ne change pas en principe on a le même), nom utilisateur et mot de passe.
$base = mysql_connect ('sql.free.fr', 'lohez.nicolas', 'cerbere60');
mysql_select_db ('livre_or', $base);

// on prepare notre requête d'insertion des données
$sql = 'INSERT INTO livre_or VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['email']).'", "'.date("Y-m-d").'", "'.mysql_escape_string($_POST['message']).'")';

// on lance la requête
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on ferme la connexion à la base de données
mysql_close();

// on redirige le visiteur vers l'accueil du livre d'or (livre.php)
//A changer par ton lien
header('Location: http://lohez.nicolas.free.fr/livre.php');

// on termine le script courant
exit();
}
else {
$erreur = 'Votre adresse E-mail est invalide.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
else {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
}
// on entre dans le cas où l'un des trois (au moins) champs n'a pas été rempli ou si l'adresse E-mail n'a pas été validée (en particulier, lorsque le visiteur charge pour la première fois cette page, vu que les 3 champs sont vides, le formulaire s'affichera). On remarque également que l'on met la valeur de chaque champs dans le value (c'est cela qui fait que si le visiteur ne remplit pas entièrement le formulaire et qu'il clique sur "Signer", et bien lorsqu'il sera redirigé vers le formulaire, ce qu'il aura déjà saisi sera conservé
?>
<!-- <html>
<head>
<title>Insertion d'une nouvelle signature</title>
</head>

<body>
<img src="http://lohez.nicolas.free.fr/images/logo-image.png" width="30%" height="30%"><br>-->
<html>
<title>Service à la personne - Livraison de vos courses à domicile</title>
<HEAD>
<link rel="shortcut icon" href="favicon.ico">
<META http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
<META name="description" content="Service à la personne - Creil - Rachel Services 60">
<META name="keywords" content="rachelservices, aide, personne, aide à la personne, creil,lamorlaye, nogent sur oise, montataire,chantilly,gouvieux,senlis,oise,picardie,garde,enfants,garde d'enfants,entretien, maison,entretien de la maison,jardin,jardinnage,courses,livraison,livraison de courses,impots,reduction,reduction d'impots,cheque emploi services,linge,repassage,tonte,gazon,menage,50%,rachel,services,rachel services,rachelservices60.com,lohez,cesu,La relève de votre courrier,L'arrosage des plantes,L'entretien de votre domicile,L'aération et éventuellement la mise en route du chauffage
La surveillance de fuites d'eau, de moisissures,Une simulation de présence,Nettoyage de votre jardin, désherbage,Ramassage de feuilles, déneigement
,Tonte de pelouse,Entretien du mobilier extérieur,Entretien de la terrasse,babysitting,Nogent-sur-Oise,Montataire,Villers-Saint-Paul,Verneuil-en-Halatte,Monchy-Saint-Éloi,Thiverny,Apremont,Saint-Maximin,Laigneville,Rieux,Cramoisy,Aumont-en-Halatte,Angicourt,Brenouille,Saint-Leu-d'Esserent,Mogneville,Vineuil-Saint-Firmin,Saint-Vaast-lès-Mello,Cauffry,Fleurines,Cinqueux,Courteuil,Villers-sous-Saint-Leu,Chantilly,Verderonne,Avilly-Saint-Léonard,Liancourt,Monceaux,Rantigny,Gouvieux,Rosoy,Cires-lès-Mello,Senlis,Précy-sur-Oise,Blaincourt-lès-Précy,Pont-Sainte-Maxence,Cambronne-lès-Clermont,Bailleval,Chamant, Labruyère, Neuilly-sous-Clermont, Villers-Saint-Frambourg, Balagny-sur-Thérain, Sacy-le-Grand, Lamorlaye, Bury ,Breuil-le-Vert, Pontpoint,Catenoy, Crouy-en-Thelle, Pontarmé, Breuil-le-Sec, Saint-Martin-Longueau, Coye-la-Forêt, Ercuis, Nointel">
<META name="robots" content="all">
<META name="revisit-after" content="1 week">
<META http-equiv="Content-Language" content="fr-FX">
<META name="author" content="RachelServices">
<META http-equiv="Reply-to" content="RachelServices">
<LINK REV=made href="Rachel Lohez">
<META name="copyright" content="Rachel Services">
<LINK REL="StyleSheet" HREF="menus/reglage.css" TYPE="text/css">
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41984964-1', 'auto');
ga('send', 'pageview');
</script>
</head>
<CENTER>
<TABLE bordercolor="#000000" BORDER=0 width=900>
<BR>
<tr>
<TD ALIGN=left valign=center><a href="index.php"><img src="images/logo-image.png" width=300 border=0></A></TD>
<TD ALIGN=center VALIGN=center><a href="http://www.dgcis.gouv.fr/services-a-la-personne" target="_blank"><img src="images/servicealapersonne.jpg" width=100 border=0></A><BR><a href="http://www.cesu.urssaf.fr/cesweb/home.jsp" target="_blank"><img src="images/logo_cesu_accepte.jpg" width=100 border=0></TD>
<TD ALIGN=center VALIGN=center><a href="http://www.oise.fr/" target="_blank"><img src="images/oise.png" width=100 border=0></A></TD>
<TD ALIGN=right><a href="index_deductions_fiscales.php"><img src="images/reduction-impot.gif" width=150 border=0></A><BR>
Agrément N° : SAP527595425<BR>Siren N° : 527 595 425<BR><small><A HREF="index_cgv.php">CONDITIONS GENERALES DE VENTE</a></small><BR><BR>
Courriel : <a href="index_contact_renseignements.php">@RachelServices60</A><BR>
Téléphone : <a href="callto:+33695688120">06.95.68.81.20</A>
</TD>
</TR>
</table>
<BR>
<TABLE bordercolor="#000000" BORDER=0 width=900>
<tr>
<a href="index.php"><B>Retour à l'accueil</B></A><BR><BR><BR><BR><BR>
<!--</html>-->
<BODY>
<form action="insert_signature.php" method="post">
<table>
<tr><td>
<b>Auteur :</b>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<b>Adresse E-mail :</b>
</td><td>
<input type="text" name="email" maxlength="50" size="50" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>">
</td></tr><tr><td>
<b>Votre message :</b>
</td><td>
<textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Signer">
</td></tr></table>
</form>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 mars 2015, 00:33

salut,

tof73 t'as donné la réponse.
tu as un caractère invisible avant le <?php ligne 1.
cela peux être une ligne vide, un espace, une tabulation ou autre.
cas plus vicieux, ton fichier est en UTF-8 avec BOM et la c'est le drame, php ne sais pas l'employer et considère le BOM comme le début du fichier du coup comme une sortie.
cela peux surement arriver avec d'autre encodage.
essai de créer un nouveau fichier (en utf-8 sans BOM) et coller le contenu du fichier actuel dedans puis d'appeler ta page pour voir ce que cela donne.
il est impératif que <?php soit la première chose du fichier le premier caractère doit être le < sinon le serveur considère cela comme un affichage et l'envoi au navigateur, du coup le serveur ne peu plus utiliser header (vu que l'entête http est déjà envoyée.

@+
Il en faut peu pour être heureux ......

nicolas.l
Invité n'ayant pas de compte PHPfrance

27 mars 2015, 13:50

merci problème résolu c’était bien un problème d'encodage

merci a vous