Création d'une page contact en PHP
J'ai créé une page de contact qui permet d'envoyer un message à l'adresse monadresse@sfr.fr qui serait l'adresse qui reçoit les messages des utilisateurs du site. Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
| <div class="main">
<div class="container">
<h1>Contact</h1>
<?php
if (!empty($_POST)) {
extract($_POST);
$valid=true;
$boundary = "----=".md5(rand());
$to = "monadresse@sfr.fr";
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $to)) {
$lf = "\r\n";
}
else
{
$lf = "\n";
}
/*extraction des données du formulaires*/
if(empty($nom)){
$valid=false;
$erreurnom="Merci de renseigner votre nom !";
}else{
$nom = $_POST['nom'];
}
if (!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i", $email)) {
$valid=false;
$erreuremail= "Adresse non valide !";
}
if(empty($email)){
$valid=false;
$erreuremail="Merci de renseigner votre adresse de courrier électronique !";
}else{
$email = $_POST['email'];
}
if(empty($message)){
$valid=false;
$erreurmessage="N'oubliez pas votre message !";
}else{
$message = $lf."--".$boundary.$lf;
$message .= "Content-type: text/html;".$lf."charset=\"ISO-8859-1\"".$lf;
$message .= "Content-Transfer-Encoding: 8bit".$lf;
$message .= $lf.$_POST['message'].$lf;
$message .= $lf."--".$boundary.$lf;
$message .= $lf."--".$boundary."--".$lf;
}
if($valid){
$sujet=$nom." a envoyé un message sur rubin-immo.com";
$sujet=utf8_decode($sujet);
$header="From: \"L_ENTREPRISE\" <$email>".$lf;
$header.="Reply-to: $email".$lf;
$header.="MIME-Version: 1.0;".$lf;
$header.="Content-type: multipart/alternative;".$lf."boundary=\"$boundary\"".$lf;
$message=stripslashes($message);
$message=utf8_decode($message);
$nom=stripslashes($nom);
if (mail($to,$sujet,$message,$header)) {
$ctrl="Votre message nous est bien parvenu :".$lf;
$ctrl.='Header : '.$header.'<br>Message : '.$message;
unset($to);
unset($sujet);
unset($message);
unset($header);
} else {
$ctrl="Une erreur est survenue et votre message n'a pas été envoyé";
}
}
}
?>
<hr>
<?php if (isset($ctrl)) {
echo "<p>$ctrl</p>";
} ?>
<form method="post" action="" class="well">
<div class="form-group">
<label for="nom">Nom </label>
<input type="text" name="nom" class="form-control" id="nom" value="<?php if (isset($nom)) {
echo $nom;
} ?>">
<div class="text-danger"><?php if (isset($erreurnom)) {
echo $erreurnom;} ?></div>
</div>
<div class="form-group">
<label for="email">E-mail </label>
<input type="email" name="email" class="form-control" id="email" value="<?php if (isset($email)) {
echo $email;
} ?>">
<div class="text-danger"><?php if (isset($erreuremail)) {
echo $erreuremail;} ?></div>
</div>
<div class="form-group">
<label for="message">Votre message </label>
<textarea name="message" class="form-control" id="message" rows="6"><?php if (isset($message)) {
echo htmlentities($_POST['message']);
} ?></textarea>
<div class="text-danger"><?php if (isset($erreurmessage)) {
echo $erreurmessage;} ?></div>
</div>
<p><button class="btn btn-primary" type="submit">
<span class="fa fa-check-square-o"></span> Envoyer
</button></p>
</form>
</div>
</div>
</div> |
Et voici l'extrait de mon php.ini qui concerne les mails :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| [mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = smtp.sfr.fr
; http://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = monadresse@sfr.fr
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On
; The path to a log file that will log all mail() calls. Log entries include
; the full path of the script, line number, To address and headers.
;mail.log = |
J'obtiens un message d'erreur standard, me demandant de vérifier mon smtp et mon port smtp : "Failed to connect to mailserver at "smtp.sfr.fr" port 25 verify your "smtp" and your "smtp_port" setting in php.ini or use ini_set()..."
J'ai beau retourner le problème dans tous les sens, je ne comprends pas ce qui cloche. Comment devrais-je configurer php.ini ? Y a-t-il quelque chose dans mon code php qui ne va pas ?
Merci d'avance de votre aide.
Création d'une page de contact en PHP
J'ai fait la modification que tu suggères, mais ça n'a guère changé : je reçois un message dans ma boîte mail sfr, mais le message est vide : le texte du message a disparu. En comprends-tu la raison ?
Page de contact : hébergement OVH
Bonjour,
A présent, mon site est en ligne, hébergé par OVH. Mais ma page de contact ne fonctionne toujours pas. C'est normal ? Faut-il configurer ou acheter quelque chose chez OVH pour que ce soit fonctionnel ? De plus, comme je suis sur un serveur mutualisé, je ne peux a priori rien configurer. En tout cas, pas d'accès à un php.ini ou quoi que ce soit sur leur serveur. Comment dois-je faire ?
Merci de votre aide.