IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Création d'une page contact en PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si ton serveur n'utilise pas une connexion SFR, il faut utiliser smtp-auth.sfr.fr sur le port 587.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Par défaut 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 ?

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu initialises $message avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $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;
    et ensuite tu passes des fonctions de modification par dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $message=stripslashes($message);
     $message=utf8_decode($message);
    Pas sûre que ce soit une bonne idée...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre confirmé Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Par défaut
    Je ne comprends pas bien pourquoi on ne peut pas passer des fonctions de modification sur le message. De toute façon, j'ai supprimé ces modifications et ça n'a absolument rien changé. Ce n'est donc pas de là que vient le problème.

  6. #6
    Membre confirmé Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Par défaut
    Je viens de me rendre compte d'une chose d'assez rageant : à mes premiers essais, les mails étaient reçus, mais je ne regardais pas au bon endroit ! Je m'explique : j'utilise wamp version "portable", sur une clé USB. Ce système, qui s'appelle "NEARD", inclut une fonction de mails qui s'appelle "Mailhog", et qui occupe le port 25... Et tous les mails que j'ai envoyés étaient là !!!

    Sauf que maintenant, à force de tripoter le code, je ne reçois plus rien ! J'ai un message d'erreur "failed to connect to mailserver..." , et même si j'arrête le service Mailhog, ça plante aussi. Et je n'arrive pas à comprendre pourquoi ça ne marche plus. C'est rageant : ça marchait au début, mais je ne le savais pas !

    Voici mon code tel qu'il est écrit actuellement, pour rappel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    (...) 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 l'entreprise-truc.com";
    				$sujet=utf8_decode($sujet);
    				$header="From: \"ENTREPRISE_TRUC\" <$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 : '.utf8_encode($message);
    					unset($to);
    					unset($sujet);
    					unset($message);
    					unset($header);
    				} else {
    					$ctrl="Une erreur est survenue et votre message n'a pas été envoyé";
    				}
     
    			}
    (...)

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par Markos22 Voir le message
    Je ne comprends pas bien pourquoi on ne peut pas passer des fonctions de modification sur le message. De toute façon, j'ai supprimé ces modifications et ça n'a absolument rien changé. Ce n'est donc pas de là que vient le problème.
    C'est surtout stripslashes qui m'embêtait, mais après vérification, ça ne devrait effectivement pas poser de problème. Enfin, personnellement, je l'aurai appliquée directement sur $_POST['message'] plutôt que sur la totalité du message.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Temps moyen de création d'une page html par php ?
    Par tlecoz dans le forum Langage
    Réponses: 21
    Dernier message: 08/01/2016, 05h54
  2. Réponses: 2
    Dernier message: 11/08/2014, 16h28
  3. [XL-2010] Création d'une page PHP ou HTML depuis un fichier.bat
    Par arno_mrs13 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/08/2012, 21h38
  4. [Batch] Création d'une page PHP ou HTML depuis un fichier.bat
    Par arno_mrs13 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 13/07/2012, 19h03
  5. Mise en page d'images - création d'une planche contact
    Par r.MAxwell dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 30/10/2009, 19h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo