Formulaire ??

arthur73 -  
 arthur73 -
Bonjour,

J'ai créé un formulaire sur mon site. Le problème, lorsque je soumet le message ma boîte mail s'ouvre !!
J'aimerai que mon message parte directement chez le destinataire sans avoir à le retaper. Voilà mon script :

<form action="mailto:palbe@orange.fr" method="post">
Nom : <input type="text" name="Nom" size="20" maxlength="256"><br><br>
Prénom : <input type="text" name="prenom" size="20" maxlength="256"><br><br>
Téléphone : <input type="text" name="tel" size="20" maxlength="256"><br><br>
E-Mail : <input type="text" name="mail" size="20" maxlength="256"><br><br>
Votre message :<br><br><textarea name="message" cols="30" rows="10">

</textarea>
<input type="submit" value="envoyer">

</form>
Merci pour votre aide
arthur73
Configuration: Windows XP Internet Explorer 7.0

5 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Tu dois utiliser un script PHP.
    0
  2. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Oui.
    Pour informations, on est obligé de passer par un serveur SMTP pour envoyer des emails.
    Avec un script côté client comme le XHTML, il faut donc que le client aie un serveur SMTP → le client mail s'ouvre
    Avec un script côté serveur comme le PHP, le serveur est souvent configurer pour utiliser un serveur SMTP mais ça dépends de l'hébergeur.

    Renommes ta page en .php et voilà le script
    <?php
    if($_POST['submitForm'] == 'true') {
    	$nom = trim($_POST['nom']);
    	$prenom = trim($_POST['prenom']);
    	$tel = trim($_POST['tel']);
    	$mail = trim($_POST['mail']);
    	$message = trim($_POST['message']);
    	
    	if(
    		empty($nom) ||
    		empty($prenom) ||
    		empty($tel) ||
    		empty($mail) ||
    		empty($message)
    	) {
    		echo 'Vous devez remplir tous les champs !';
    	} else {
    		if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i")) {
    			echo 'Adresse email invalide !';
    		} else {
    			$to = 'palbe@orange.fr';
    			$subject = 'Contact depuis le site';
    			$message = '';
    			foreach($_POST as $k => $v) {
    				$message .= $k.' : '.$v."\n";
    			}
    			$headers = 	'From: webmaster@example.com'."\r\n".
        					'Reply-To: '.$mail."\r\n" .
        					'X-Mailer: PHP/'.phpversion();
    			if(mail($to, $subject, $message, $headers)) {
    				echo 'Mail envoyé !';
    			} else {
    				echo 'Erreur lors de l\'envoye du mail';
    			}
    		}
    	}
    } else {
    ?><form action="" method="post">
    	<p>
    		<label for="nom"Nom : </label>
    		<input type="text" name="nom" id="nom" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="prenom">Prénom : </label>
    		<input type="text" name="prenom" id="prenom" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="tel">Téléphone : </label>
    		<input type="text" name="tel" id="tel" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="mail">E-Mail : </label>
    		<input type="text" name="mail" id="mail" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="message">Votre message :</label><br/>
    		<textarea name="message" id="message" cols="30" rows="10"></textarea>
    	</p>
    	<p>
    		<input type="submit" value="envoyer" />
    		<input type="hidden" name="submitForm" value="true" />
    	</p>
    </form><?php } ?>
    0
    1. arthur73
       
      Merci pour la réponse,

      J'ai essayé ton script, 2 problèmes :

      - Des lignes de script apparaissent sur le haut de la page.

      - Dois je changer l'adresse suivante 'From: webmaster@example.com'

      Merci pour ton aide

      arthur73
      0
  3. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Ta page doit avoir l'extension ".php" et doit être sur un serveur.
    Voilà mon script corrigé (la ligne "From") :
    <?php
    if($_POST['submitForm'] == 'true') {
    	$nom = trim($_POST['nom']);
    	$prenom = trim($_POST['prenom']);
    	$tel = trim($_POST['tel']);
    	$mail = trim($_POST['mail']);
    	$message = trim($_POST['message']);
    	
    	if(
    		empty($nom) ||
    		empty($prenom) ||
    		empty($tel) ||
    		empty($mail) ||
    		empty($message)
    	) {
    		echo 'Vous devez remplir tous les champs !';
    	} else {
    		if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i")) {
    			echo 'Adresse email invalide !';
    		} else {
    			$to = 'palbe@orange.fr';
    			$subject = 'Contact depuis le site';
    			$message = '';
    			foreach($_POST as $k => $v) {
    				$message .= $k.' : '.$v."\n";
    			}
    			$headers = 	'From: '.$mail."\r\n".
        					'Reply-To: '.$mail."\r\n" .
        					'X-Mailer: PHP/'.phpversion();
    			if(mail($to, $subject, $message, $headers)) {
    				echo 'Mail envoyé !';
    			} else {
    				echo 'Erreur lors de l\'envoye du mail';
    			}
    		}
    	}
    } else {
    ?><form action="" method="post">
    	<p>
    		<label for="nom"Nom : </label>
    		<input type="text" name="nom" id="nom" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="prenom">Prénom : </label>
    		<input type="text" name="prenom" id="prenom" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="tel">Téléphone : </label>
    		<input type="text" name="tel" id="tel" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="mail">E-Mail : </label>
    		<input type="text" name="mail" id="mail" size="20" maxlength="256" />
    	</p>
    	<p>
    		<label for="message">Votre message :</label><br/>
    		<textarea name="message" id="message" cols="30" rows="10"></textarea>
    	</p>
    	<p>
    		<input type="submit" value="envoyer" />
    		<input type="hidden" name="submitForm" value="true" />
    	</p>
    </form><?php } ?>
    0
    1. arthur73
       
      Bonjour,

      J'ai toujours deux lignes de codes qui apparaissent sur ma page de formulaire !!

      Les voici :

      $v) { $message .= $k.' : '.$v."\n"; } $headers = 'From: '.$mail."\r\n". 'Reply-To: '.$mail."\r\n" . 'X-Mailer: PHP/'.phpversion(); if(mail($to, $subject, $message, $headers)) { echo 'Mail envoyé !'; } else { echo 'Erreur lors de l\'envoye du mail'; } } } } else { ?>

      Merci pour ton aide

      arthur73
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Ce n'est pas possible. Vérifie que ta page aie bien l'extension ".php" au lieu de ".html".
    Ensuite, tu dois lancer le script quand il est sur le serveur, pas en l'ouvrant avec un clic droit.
    0
    1. arthur73
       
      Bonjour,

      J'ai bien une extension php, mais lorsque je copie ton script j'ai toujours deux lignes de codes qui apparaissent sur la page web.
      0