Aller au contenu

Problème de formulaire


Max Moimoi

Sujets conseillés

Je suis un webmaster débutant et amateur, je suis artiste peintre et je viens de me faire un site, à l'aide d'un "wysiwyg". Mon site : http://www.biraisjmpeintre.fr

Je comprends sans être codeur ce que je fais en HTML, j'interviens si besoin est dans le code.

Mais je ne connais rien au PHP, j'ai pourtant inclus dans mon site un formulaire tout fait, issu de ce langage. Celui ci fonctionne bien, je reçois les messages mais affiche un message d'erreur directement sur la page du formulaire et lors de l'envoi du message, de plus il n'affiche pas la page de remerciement : merci.html que j'ai placé dans le même répertoire que le formulaire.

Voici le message d'erreur qui s'ouvre lors de l'envoi :

Warning: ini_set() has been disabled for security reasons in formulaire1.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at /var/www/21/b/i/r/biraisjmpeintre.fr/www/pagecomment/formulaire1.php:2) in formulaire1.php on line 49

Voici ce qui s'affiche sur la page du formulaire :

Warning: ini_set() has been disabled for security reasons in formulaire1.php on line 5

J'espère que mon incompétence ne vous découragera pas. Merci d'avance.

Max Moimoi blush.gif

Voici le code PHP de ce formulaire :

<?php

// N'afficher que les erreurs, pas les avertissements...
ini_set("error_reporting", "E_ALL & ~E_NOTICE");

// Adresse de réception du formulaire
$email_dest = "maxmoimoi_AT_biraisjmpeintre.fr";

if ($_POST['envoi']) {

// E-mail headers:
$headers ="MIME-Version: 1.0 \n";
$headers .="From: biraisjmpeintre.fr<maxmoimoi_AT_biraisjmpeintre.fr>\n";


$headers .="Content-Type: text/html; charset=iso-8859-1 \n";

$subject = "Votre commentaire";

$partie_entete = "<html><head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>
<body bgcolor=#FFFFFF>";

for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}

if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}

if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}

$fin = "</body></html>";

$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin;

// Send the e-mail
if (@!mail($email_dest,$subject,$sortie,$headers)) {
echo("Envoi du formulaire impossible");
} else { // Closing if !mail...

// Renvoi à la page de remerciement
header("Location:merci.html");
exit();

} // Fin du else
} // Closing if edit
?>

Merci à Portekoi d'avoir répondu à mon premier envoi.

Lien vers le commentaire
Partager sur d’autres sites

Tout ton problème semble venir de la première ligne de code.

Le message que tu obtiens :

ini_set() has been disabled for security reason est explicite : apparemment, ton hébergeur empêche d'utiliser la fonction ini_set, pour des raisons de sécurité (tu peux en savoir un peu plus sur cette page, rubrique "Protection des ressources").

Le reste des erreurs affichées sont dûes au fait que tu as un premier message d'erreur, qui empêche la redirection (la fonction header doit être appelée avant que tout caractère ne soit envoyé au navigateur, d'où les erreurs suivantes).

En supprimant le début de ton code (càd la ligne contenant le ini_set()), tout devrait rentrer dans l'ordre.

PS : j'ai édité ton message, pour utiliser la balise CODEBOX, qui permet de coller des codes assez longs, sans toutefois défigurer la page.

Lien vers le commentaire
Partager sur d’autres sites

Merci captain torche de t'être penché sur mon problème.

J'ai supprimé la ligne ini_set comme prescrit.

Résultat : plus de message d'erreur sur le formulaire lui même mais toujours un message d'erreur lors de l'envoi :

Warning: Cannot modify header information - headers already sent by (output started at /var/www/21/b/i/r/biraisjmpeintre.fr/www/pagecomment/formulaire1.php:2) in formulaire1.php on line 49

et toujours pas d'affichage de la page merci.html.

Néanmoins je reçois sans problème les messages du formulaire.

Désolé d'insister, mais ce message d'erreur risque d'affoler mes visiteurs même si je reçois bien le message.

Pendant que j'y suis, au risque d'abuser, est-il possible de recevoir les messages en clair ( sans les "Votre nom=tartempion") ?

Est-il possible aussi d'afficher automatiquement le contenu des messages sur mon site ?

Merci à celles ou ceux qui voudront bien s'y coller.

Lien vers le commentaire
Partager sur d’autres sites

Si le seul affichage que tu as es Cannot modify header information - headers already sent ..., vérifie bien que ton code ne retourne strictement AUCUN caractère avant l'appel à la fonction header.

Si ce n'est pas déjà fait, place-le en début de fichier.

Si c'est déjà fait, vérifie que tu n'as pas une ligne vide (ou même un espace) avant.

Lien vers le commentaire
Partager sur d’autres sites

Désolé, je le répète, je ne connais rien au PHP, ce dernier message m'est incompréhensible.

peux-tu expliciter ? :unsure:

Comment vérifier que ce code (qui n'est pas le mien, j'en suis bien incapable), ne retourne aucun caractère avant l'appel de la fonction header ?

Que devrais-je placer en début de fichier ?

Avant quoi ne faut-il pas avoir de ligne vide ou d'espace ?

Je me suis attelé à la fabrication d'un site pour des raisons financières, je me suis beaucoup amusé

et m'amuse toujours à le faire,mais je suis peintre avant tout, malgré le plaisir que je prendrais certainement à la programmation, je ne peux pas tout faire.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour captain_torche,

Un grand merci.

Hier au soir, je devais être un peu las et pour tout dire un peu lent.

Au réveil j'ai compris ce que tu voulais dire, il y avait effectivement une ligne vide avant le début du php,

j'ai rectifié, ça marche, plus de message d'erreur, et affichage de la page de remerciement. :thumbsup:

Encore merci. et merci aussi aux deux webmasters qui ont pris la peine de visiter mon site.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...