Est ce que mon code est valide ?

Fermé
Essayonsderesoudrelesouci Messages postés 22 Date d'inscription mercredi 30 décembre 2015 Statut Membre Dernière intervention 13 février 2016 - 3 janv. 2016 à 04:31
jordane45 Messages postés 38182 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 mai 2024 - 2 mars 2016 à 12:21
Bonjour, créant mon site internet et ayant peut de pratique je voudrait savoir si mon code est valide pour envoyer un mail php.
Première page qui est mon index.php :

<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset="utf-8">
<...>
</head>
<body>
<...>
<?php
<div class="span9 contact_form">
<div id="note"></div>
<div id="fields">
<form id="contact-form-face" class="clearfix" action="envoi.php" method="post">
<input type="text" name="name" value="Nom" onFocus="if (this.value == 'Nom') this.value = '';" onBlur="if (this.value == '') this.value = 'Nom';"/>
<input type="text" name="mail" value="Mail" onFocus="if (this.value == 'mail') this.value = '';" onBlur="if (this.value == '') this.value = 'mail';"/>
<textarea name="message" onFocus="if (this.value == 'Message') this.value = '';" onBlur="if (this.value == '') this.value = 'Message';">Message</textarea>
<input class="contact_btn" name="bouton" type="submit" value="Envoyer le message" />
</form>
</div>
</body>
</head>


Et puis ma deux eme page pour envoyer le mail php: envoi.php :


<?php
$nom=$HTTP_POST_VARS['nom'];
$mail=$HTTP_POST_VARS['mail'];
$message=$HTTP_POST_VARS['message'];

$headers = "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP";

$destinataire="website@**********.com";
if (mail($destinataire,$body,$headers)) {
echo "Votre mail a été envoyé<br>";
} else {
echo "Une erreur s'est produite";
}
?></p>
<p align="center">Vous allez bientot etre redirigé vers la page d'acceuil<br>
Si vous n'etes pas redirigé au bout de 5 secondes cliquez <a href="http://www.*********.com">ici
</a></p>


Je sais qu'en local on peut pas vérifier si cela marche du coup je galère et je ne sais pas si c'est bon...
Merci beaucoup pour vos réponses ! et bonne année =)
A voir également:

3 réponses

Brandysve Messages postés 55 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 16 février 2017 5
2 mars 2016 à 10:43
Bonjour,

Bien sur que tu peux tester en local, tu installes un serveur local, comme Wamp et tu le configures pour pouvoir t'envoyer des mails. Il existe également des services qui te permettent de les tester mais je n'arrive plus à mettre le doigts dessus.

Voici un tuto pour configurer wamp : https://www.grafikart.fr/blog/mail-local-wamp

Ps : pour ta page index.php, tu es pas obligé de mettre ton html dans le php.

<?php
//Ton code
?>

<!DOCTYPE html>
<!--Ton html-->
0
bg62 Messages postés 23598 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 19 mai 2024 2 365
2 mars 2016 à 12:14
lut;)
tu peux le tester sur le validateur officiel ( W3C) , soit en testant via un site provisoire, soit en entrant le code directement ;)
0
jordane45 Messages postés 38182 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 mai 2024 4 670
2 mars 2016 à 12:21
Bonjour,


Non.
Ton code n'est pas tout à fait correct.

Par exemple, tu as input dont le "NAME" est : 'name'
 <input type="text" name="name" value="Nom" onFocus="if (this.value == 'Nom') this.value = '';" onBlur="if (this.value == '') this.value = 'Nom';"/>

Et dans ton PHP ... tu essayes de récupérer "NOM"
$nom=$HTTP_POST_VARS['nom']; 


Ensuite....
Plutot que d'utiliser $HTTP_POST_VARS ... utilises les variables $_POST
Penses également à vérifier que la variable existe AVANT de l'utiliser ( via la fonction ISSET et la syntaxe ternaire par exemple)
Ce qui donnerait :
$nom = isset($_POST['name']) ? $_POST['name'] : '';



Et enfin.... Tu as mal utilisé la fonction MAIL
Tu as écris :
mail($destinataire,$body,$headers)

... sauf.. que.. tu as oublié un argument : le SUJET.

La bonne syntaxe etant :
mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

Voir ici : https://www.php.net/manual/fr/function.mail.php


Ah.. et pour reprendre ce que t'a dit Brendy

Ps : pour ta page index.php, tu es pas obligé de mettre ton html dans le php.

la bonne formulation serait plutôt :
pour ta page index.php, tu NE DOIS PAS mettre ton html dans les balises php

0