Bonjour à tous !

J'ai un problème avec un formulaire de contact ; la résolution est sans doute très simple, mais je ne la trouve pas, je suis un zéro ! Smiley cligne

Voilà, j'ai un formulaire de contact très simple. Lorsque je clique sur mon bouton "envoyer", je reçois bien le mail, mais problème, je me retrouve sur une page blanche, bien que j'ai stipulé une adresse précise...

Le code PHP de la page qui contient le formulaire :
<form method=POST action=formmail.php >
<input type=hidden name=subject value=formmail>
<table>
<tr><td>Votre Nom :</td>
<td><input type=text name=realname size=30></td></tr>
<tr><td>Votre Email :</td>
<td><input type=text name=email size=30></td></tr>
<tr><td>Sujet :</td>
<td><input type=text name=title size=30></td></tr>
<tr><td colspan=2>Message:<br>
<textarea COLS=50 ROWS=20 name=comments></textarea>
</td></tr>
</table>
<br> <input type=submit value=Envoyer> -
<input type=reset value=Annuler>
</form>


Le code de mon fichier "formmail.php" :
<?php
$TO = "toto@toto.fr";
$h = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
@Header("Location:  http://toto.eu");
 
?>



Ce code fonctionnait chez un autre hébergeur où je ne rencontrais pas cette difficulté, mais là, apparemment c'est lié à une caractéristique d'OVH... ??

... initialement, lorsque je n'avais pas mis le "@" devant Header, ça m'affichait une autre erreur :
<citation>Warning: Cannot modify header information - headers already sent by (output started at /homez.353/meijedev/www/formmail.php:10) in /homez.353/meijedev/www/formmail.php on line 18</citation>

Et maintenant que j'ai rajouté ce "@", ça me renvoie sur une page blanche....

Please, je serai très reconnaissant à celui ou celle qui pourra m'aider.
Merci par avance, et bonne journée ! Smiley biggrin
Modifié par Ben0905 (31 Aug 2010 - 10:56)
Salut,

on ne règle pas les problèmes en les cachant. Smiley cligne

La fonction header (comme setcookie ou session_start) doit être utilisée avant toute sortie html. Donc avant le DOCTYPE.

Si tu penses n'avoir aucun caractère avant la balise <?php c'est peut-être que tu enregistres tes pages en utf8 avec BOM.
Merci de ta réponse.
Mais je ne veux rien cacher...!!!!
Voici le code intégral du fichier formmail.php :

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Formulaire de contact</title>
</head>

<body>

<?php
$TO = "toto@toto.fr";
$h = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
@Header("Location:  http://toto.eu");
 
?>


</body>
</html>


Donc ici en effet la fonction est appelée après le DOCTYPE..., suffit que je déplace cette ligne avant ? J'y connais vraiment rien en php....
Modifié par Ben0905 (27 Aug 2010 - 13:51)
OK, bah j'ai compris !
Je n'ai mis que les balises php dans le fichier .php, en supprimant tout le reste, et ça fonctionne....
MErci.
:)
De rien Smiley smile !

Si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne


PS: par "cacher" je voulais dire que l'utilisation du @ cache les warnings alors qu'il faut les corriger. Par ailleurs en cours de développement il faut afficher toutes les erreurs alors qu'une fois en ligne il faut les cacher pour ne pas donner d'informations à un éventuel hacker.