Aller au contenu

formulaire PHP qui ne fonctionne pas

Featured Replies

Posté(e)

Bonjour, je travaille actuellement sur la conception d'un site web, et j'aimerais, sur ce même site, placer un formulaire avec plusieurs champs de saisie, et que quand on appuie sur un bouton envoyer les "résultats" de ce formulaire me soient envoyés par mail. Je me suis beaucoup documenté sur internet, j'ai réussi à mettre en place le formulaire en l'intégrant dans ma page HTML et mon CSS, et j'ai repris un scirpt php. Seulement, lorsque je clique sur envoyer, je suis bien renvoyé sur la page demandée mais je ne reçois aucun mail ! Voici mon formulaire intégré dans ma page HTML :

 

      <form method=POST action =formmail.php role="form">

        <div class="col-md-6 col-sm-6">

          <div class="form-group">

            <input type="text" class="form-control" id="name" placeholder="Nom">

          </div>

          <div class="form-group">

            <input type="email" class="form-control" id="email" placeholder="Email (faculatatif)">

          </div>

          <div class="form-group">

            <input type="text" class="form-control" id="phone" placeholder="Téléphone" )>

          </div>

        </div>

        <div class="col-md-6 col-sm-6">

          <div class="form-group">

            <input type="date" class="form-control" id="date" placeholder="Date">

          </div>

          <div class="form-group">

            <input type="time" class="form-control" id="time" placeholder="Heure">

          </div>

        </div>

        <div class="col-md-12 col-sm-12">

          <div class="form-group">

            <textarea class="form-control" id="message" placeholder="Votre message" rows="5">

	

 </textarea>

          </div>

          <div class="text-center">

            <button type="submit" class="btn">ENVOYER ! </button>

          </div>

        </div>

      </form>

 

Et en formmail.php j'ai ceci :

 

<?php 
$T0 = "monadresse@mail.com"; 

$h = "From: " . $TO; 

$message = ""; 

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

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

Header("Location: index.html"); 

?>


J'ai passé du temps à consulter des exemples de formulaires de ce genre mais je n'arrive pas à comprendre ce qui cloche avec le mien ! En plus j'ai bien fait Panneau de Configuration -> Notification, puis activer les notifications par mail ! Voilà je vous remercie d'avance pour votre aide et vos réponses ! :-)

 

 

 

 

 

 

 

 

Posté(e)

Ton problème ne vient pas de la fonction mail, mais de $HTTP_POST_VARS qui a été déprécié (rendu obsolète) avec php 4.1 (en 2001 !!!), il ne faut plus l'utiliser

Comme je suis sympa :

<!DOCTYPE html>
<html lang="fr">
<head>
	<meta charset="UTF-8" />
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	<meta name="Description" content="un simple formulaire"  />
	<title>formulaire</title>
</head>
<body>
<form method="post" action="test.php">
	<label><b>Votre nom :&nbsp;</b></label><input type="text" name="nnom" id="inom" value="" autocomplete="off" placeholder="votre nom" /><br />
	<label><b>Votre prénom :&nbsp;</b></label><input type="text" name="nprenom" id="iprenom" value="" autocomplete="off" placeholder="votre prénom" /><br />
	<input type="submit" name="accept" value="Soumettre" /></div>
</form>
<?php
if ( (isset($_POST['nnom']) && $_POST['nnom'] != "") || (isset($_POST['nprenom']) && $_POST['nprenom'] != "") ){
	echo '<p>$_POST[\'nnom\']=' . $_POST['nnom'] . "</p>\n";
	echo '<p>$_POST[\'nprenom\']=' . $_POST['nprenom'] . "</p>\n";
	//on peut maintenant faire des choses avec les données
	//...
}else{
	echo 'le formulaire est vide !';
}
?>
</body>
</html>

edit : J'ai ajouté un peu de logique au php et je t'ai fait un html en règle

Modifié par Fenrir

Posté(e)
  • Auteur

Merci pour cette rapide réponse ! 

Fenrir je te remercie d'avoir pris le temps de m'avoir mis en place quelque chose de si complet ! Par contre au risque de passer pour une cruche, comment je dois adapter mon php du coup ? Parce que dans mon html dans le formulaire je récoltais un nom, un mail, un téléphone, une date, un horraire, et enfin un message. Ce qui veut dire que ça donnerait ça (en m'inspirant du tien)

<?php
if ( (isset($_POST['name']) && $_POST['name'] != "") || (isset($_POST['email']) && $_POST['email'] != "") || (isset($_POST['phone']) && $_POST['phone'] != "") || (isset($_POST['date']) && $_POST['date'] != "") || (isset($_POST['time']) && $_POST['time'] != "") || (isset($_POST['message']) && $_POST['message'] != "") ){
	echo '<p>$_POST[\'name\']=' . $_POST['name'] . "</p>\n";
	echo '<p>$_POST[\'email\']=' . $_POST['email'] . "</p>\n";
    echo '<p>$_POST[\'phone\']=' . $_POST['phone'] . "</p>\n";
    echo '<p>$_POST[\'date\']=' . $_POST['date'] . "</p>\n";
    echo '<p>$_POST[\'time\']=' . $_POST['time'] . "</p>\n";
    echo '<p>$_POST[\'message\']=' . $_POST['message'] . "</p>\n";


}else{
	echo 'le formulaire est vide !';
}
?>

Mais une fois que j'ai tout ça, je m'y prends comment pour l'envoyer par mail ? Avec la fonction mail() ? Je n'arrive pas à comprendre comment structurer le php pour arriver à mes fins. Ce que je ne comprends pas non plus c'es pourquoi le php se trouve dans le HTML ? Ca fonctionne comme ça ? Car j'ai appris que ça se faisait dans un fichier à part.

 

Voilà je m'excuse si ce que je demande peut sembler ridicule mais là je suis vraiment bloqué... :mellow: 

 

Merci d'avance :)

 

 

EDIT : entre temps j'ai trouvé un autre script php plus récent :

 

<?php
$TO = "monadresse@me.com";

$h  = "From: " . $TO;

$message = "";

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

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

Header("Location: index.html");

?>

 

Je reçois bien le mail ! Mais il est vide... je continue mes recherches... !

 

EDIT 2 : trouvé !!! Dans mon html pour désigner une donnée à saisir je mettais id="nom" ou id="mail" ! J'ai changé ça par name=nom ou name=mail ! Tout fonctionne ! Merci Fenrir de m'avoir aidé à me mettre à jour avec mon php 2001 lol !!  

 

Modifié par pyjama11

Posté(e)

Le php n'est pas dans le html, c'est le html qui est dans le php :)

Normalement il faudrait séparer la partie applicative de la partie affichage, mais je pense que tu n'as pas les bases pour faire du MVC, alors j'ai fait simple

Je te recommande d'apprendre comment tout ça fonctionne plutôt que d'aller prendre des codes au hasard sur le net (c'est dangereux, un mauvais code peut permettre à un pirate d'accéder à 100% de ton synology).

Un bon site pour commencer : https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql

Posté(e)
  • Auteur

Tu penses que ce n'est pas très raisonnable que je laisse mon site comme ça ?

Posté(e)

Si cette page est accessible depuis Internet, il ne faudra pas attendre longtemps avant que :

  1. ton syno se mette à ramer
  2. ta boite mail soit saturée
  3. ton ip soit blacklistée par ton hébergeur de mail
  4. ton fai t’envoie un message d'avertissement pour spam
Posté(e)
  • Auteur

Enfin ce sera à petite échelle, y'aura que quelques emails par jour je pense, pas plus ! Certains jours y'aura peut être même pas de mails !

Posté(e)

Enfin ce sera à petite échelle, y'aura que quelques emails par jour je pense, pas plus ! Certains jours y'aura peut être même pas de mails !

jusqu'à ce qu'un petit pirate trouve ton ip ...

Posté(e)
  • Auteur

et avec un simple code HTML et le code php que j'ai trouvé, il peut avoir accès à 100% de mon syno et en faire ce qu'il veut ?

Posté(e)

et avec un simple code HTML et le code php que j'ai trouvé, il peut avoir accès à 100% de mon syno et en faire ce qu'il veut ?

oui

Posté(e)

bien que rien ne soit impossible, le + gros risque c'est qd meme d'avoir + un risque de millier d'email + surcharge du syno qui suivra pas les requetes

Posté(e)
  • Auteur

décidément le monde est bien fait lol ^^ ! Merci du coup je vais y réfléchir à deux fois... Et sinon au niveau de la surcharge j'aurais pas de souci, mon outlook se bloque au bout d'une cinquantaine de messages envoyés à la suite dans une très petit intervalle de temps.. En tout cas merci à vous tous pour votre aide :) Sujet résolu !

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.