Page 1 sur 1

Problème formulaire PHP et fonction mail

Posté : 28 mai 2012, 12:01
par ixdayz
Bonjour à tous, je me présente je m'appelle Morgan et je suis en 1ère année de BTS IRIS à La rochelle. Je suis actuellement en période de stage et j'ai pour mission de réaliser le site web d'une entreprise de développement durable. Je suis donc seul, aucun maitre de stage et je bloque sur un soucis de mail depuis hier donc c'est pour cette raison que je viens à votre aide :).

Je dois créer un formulaire PHP avec à la validation un envoi par mail mais quand je clique sur valider ça ne traite rien ça m'affiche ceci :

'."\r\n\r\n"; /* Envoi de l'e-mail */ if (mail($to, $sujet, $msg, $headers)) { $alert = 'Votre demande à été envoyé avec succès'; /* On créé un cookie de courte durée (ici 120 secondes) pour éviter de * renvoyer un mail en rafraichissant la page */ setcookie("sent", "1", time() + 120); /* On détruit la variable $_POST */ unset($_POST); } else { $alert = 'Erreur d\'envoi de votre demande'; } } /* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */ else { unset($_POST); } } ?>

J'ai essayé en local avec easyphp et en ligne (herbergeur : amen.fr), le résultat est le même.

Voici la partie HTML du formulaire :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Solar17 - Demande de devis</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" href="styles/devis.css" />
</head>
<body>	
	<!-- Balise form spécifique au formulaire -->
	<form method="post" action="traitement_devis.php">
		<!-- Tout ce qui est à gauche -->
		<div id="GAUCHE">
		
			<!-- Les titres de la colonne -->
			<div id="coord">
				<h2> Coordonnées </h2>
			</div>
			 
			
			<!-- CLIENT -->
			<div id="client">
				<h4> CLIENT </h4>
			</div>
			
			
			<!-- Civilité -->
			<div id="civilite" name="civilite"><label> Civilité : </label> 
				<input type="checkbox" name="civilite" id="case" /> <label for="case">MR</label>
				<input type="checkbox" name="civilite" id="case" /> <label for="case">MME</label>
				<input type="checkbox" name="civilite" id="case" /> <label for="case">MELLE</label>		
			</div>
			
			
			<!-- Nom -->
			<div id="nom"><label> Nom : </label>
				  <input type="text" name="nom"/>
			</div>
			
			
			<!-- Prénom -->
			<div id="prenom"><label> Prénom : </label>
				  <input type="text" name="prenom"/>
			</div>
			
			
			<!-- Adresse -->
			<div id="adresse"><label> Adresse : </label>
				  <input type="text" name="adresse" />
			</div>
			
			
			<!-- CP -->
			<div id="cp"><label> Code Postal: </label>
				  <input type="text" size="5" maxlength="5" name="cp" />
			</div>
			
			
			<!-- Ville -->
			<div id="ville"><label> Ville : </label>
				  <input type="text" name="ville"/>
			</div>
			
			
			<!-- Digicode -->
			<div id="digi"><label> Digicode : </label>
				  <input type="text" name="digi" />
			</div>
			
			
			<!-- Etage -->
			<div id="etage"><label> Etage : </label>
				  <input type="text" size="2" maxlength="2" name="etage" />
			</div>
			
			
			<!-- Porte -->
			<div id="porte"><label> Porte : </label>
				  <input type="text" name="porte" />
			</div>
			
			
			<!-- Tel. Fixe -->
			<div id="telfixe"><label> Tél. Fixe : </label>
				  <input type="text" size="10" maxlength="10" name="telfixe" />
			</div>
			
			
			<!-- Tel. Port -->
			<div id="telport"><label> Tél. Portable : </label>
				<input type="text" size="10" maxlength="10" name="telport" />
			</div>
			
			<!-- email -->
			<div id="adressemail"><label> Email : </label>
				<input type="text" name="adressemail"/>
			</div>
		
			
					
			<!-- CHANTIER -->
			<div id="chantier">
				<h4> CHANTIER </h4>
			</div>
			
			
			<!-- Adresse identique -->
			<div id="adressiden" name="adressiden" ><label> Adresse identique : </label> 
				<input type="checkbox" name="adressiden" id="case" /> <label for="case">Oui</label>
				<input type="checkbox" name="adressiden" id="case" /> <label for="case">Non</label>
			</div>
			
			
			<div id="aterisque">
			<!-- Astérisque -->
				<h5> * Adresse chantier dans les observations complémentaires. </h5>
			</div>
			
			
			<!-- RDV -->
			<div id="rdv">
				<h4> RENDEZ-VOUS </h4>
			</div>
			
			<!-- Quand ? -->
			<div id="rdv_quand"><label> Quand préferez vous un rendez-vous ? </label>
				<select name="rdvdate">
					<option name="rdv_quand" value="choix1">En semaine</option>
					<option name="rdv_quand" value="choix2">En weekend</option>
				</select>
			</div>
			

			<!-- Heure? -->
			<div id="rdv_heure"><label> Vers quelle heure préferez vous un rendez-vous ? </label>
				<select name="rdvheure">
					<option name="rdv_heure" value="choix1">15h</option>
					<option name="rdv_heure" value="choix2">18h</option>
				</select>
			</div>
		</div>	
		
		<!-- Tout ce qui est à droite -->
		<div id="DROITE">
		 <!-- Préqualification -->
			<div id="preq">
				<h2> Préqualification </h2>
			</div>
			
			<!-- INTERET PRINCIPAL -->
			<div id="interetprincipal">
				<h4> INTERET PRINCIPAL </h4>
			</div>
			
			<!-- Ballon solaire -->
			<div id="ballon" name="ballon"><label> Ballon solaire : </label>
				<input type="checkbox" name="ballon" id="case" /> <label for="case">Oui</label>
				<input type="checkbox" name="ballon" id="case" /> <label for="case">Non</label>
			</div>
			
			
			<!-- Pompe à chaleur -->
			<div id="pompe" name="pompe"><label> Pompe à chaleur : </label>
				<input type="checkbox" name="pompe" id="case" /> <label for="case">Oui</label>
				<input type="checkbox" name="pompe" id="case" /> <label for="case">Non</label>
			</div>
			
			
			
			<!-- INTERET DU PROJET -->
			<div id="interetprojet">
				<h4> INTERET DU PROJET </h4>
			</div>
			
			<!-- Ecologie -->
			<div id="ecol" name="ecol"><label> Ecologie : </label>
				<input type="checkbox" name="ecol" id="case" /> <label for="case">Oui</label>
				<input type="checkbox" name="ecol" id="case" /> <label for="case">Non</label>
			</div>
			
			<!-- Economie -->
			<div id="econ" name="econ"><label> Economie : </label>
				<input type="checkbox" name="econ" id="case" /> <label for="case">Oui</label>
				<input type="checkbox" name="econ" id="case" /> <label for="case">Non</label>
			</div>
			
			
			
			<!-- LE FOYER -->
			<div id="foyer">
				<h4> LE FOYER </h4>
			</div>
			
			
			<!-- Case Appartement/Maison -->
			<div id="hab" name="hab"><label> Votre habitation : </label> 
				<input type="checkbox" name="hab" id="case" /> <label for="case">Appartement</label>
				<input type="checkbox" name="hab" id="case" /> <label for="case">Maison</label>
			</div>
			 
			<br></br>
			
			<!-- Proprio depuis quand ? -->
			<div id="proprio"><label> Depuis quand êtes-vous propriétaire ? </label>
			</div>
			
			<!-- Textbox -->
			<textarea name="proprio" rows="5" cols="45">
				Rédigez ici...
			</textarea>

			
			
			<!-- LE PROJET -->
			<div id="projet">
				<h4> LE PROJET </h4>
			</div>
			
			<!-- Connaissez vous les energies...-->
			<div id="ener_renouv" name="ener_renouv"><label> Connaissez vous les énergies renouvelables : </label>
				<input type="checkbox" name="ener_renouv" id="case" /> <label for="case">Oui</label>
				<input type="checkbox" name="ener_renouv" id="case" /> <label for="case">Non</label>
			</div>
			
			
			<!-- Depuis quand y songez...-->
			<div id="songe"><label> Depuis combien de temps y songez-vous ?  </label>
				<select name="songez">
					<option name="songe" value="choix1">1 mois</option>
					<option name="songe" value="choix2">6 mois</option>
					<option name="songe" value="choix2">1 ans</option>
					<option name="songe" value="choix2">+ 1ans</option>
				</select>
			</div>
			
		</div>
		
		
		<!-- Tout ce qui est en bas -->
		<div id="BAS">
		
			<!-- Obeservation complémentaire -->
			<div id="observ_comp">
				<h3> Observations complémentaires : </h3>
			</div>
		
			<!-- Textbox -->
			<textarea name="observ_comp" rows="6" cols="45">
				Rédigez ici...
			</textarea>
			
			<br></br>
			
		</div>

		<!-- Cliquer sur.... -->
		<div id="penseclique">
			<h5> (Cliquez sur valider pour envoyer votre formulaire) </h5>
		</div>	
			
		<!-- Boutons Valid/Reset -->
		<div id="buttons">
			<input type="submit" value="Valider" name="valider" />
		</div>
	</form>	
</body>
</html>
Et voici la partie PHP :
<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (isset($_POST['valider']))
{
    /* Récupération des valeurs des champs du formulaire */
    if (get_magic_quotes_gpc())
    {
      $civilite			= stripslashes(trim($_POST['civilite']));
      $nom	     		= stripslashes(trim($_POST['nom']));
	  $prenom	     	= stripslashes(trim($_POST['prenom']));
	  $adresse	     	= stripslashes(trim($_POST['adresse']));
	  $cp	     		= stripslashes(trim($_POST['cp']));
	  $ville	     	= stripslashes(trim($_POST['ville']));
	  $digi	     		= stripslashes(trim($_POST['digi']));
	  $etage	     	= stripslashes(trim($_POST['etage']));
	  $porte	     	= stripslashes(trim($_POST['porte']));
	  $telfixe	     	= stripslashes(trim($_POST['telfixe']));
	  $telport	     	= stripslashes(trim($_POST['telport']));
	  $adressemail	    = stripslashes(trim($_POST['adressemail']));
	  $adressiden	    = stripslashes(trim($_POST['adressiden']));
	  $rdvdate	     	= stripslashes(trim($_POST['rdvdate']));
	  $rdvheure	     	= stripslashes(trim($_POST['rdvheure']));
	  $ballon     		= stripslashes(trim($_POST['ballon']));
	  $pompe	     	= stripslashes(trim($_POST['pompe']));
	  $ecol	     		= stripslashes(trim($_POST['ecol']));
	  $econ	     		= stripslashes(trim($_POST['econ']));
	  $hab     			= stripslashes(trim($_POST['hab']));
	  $proprio     		= stripslashes(trim($_POST['proprio']));
	  $ener_renouv   	= stripslashes(trim($_POST['ener_renouv']));
	  $songez    		= stripslashes(trim($_POST['songez']));
    }
    else
    {
	  $civilite			= trim($_POST['civilite']);
      $nom	     		= trim($_POST['nom']);
	  $prenom	     	= trim($_POST['prenom']);
	  $adresse	     	= trim($_POST['adresse']);
	  $cp	     		= trim($_POST['cp']);
	  $ville	     	= trim($_POST['ville']);
	  $digi	     		= trim($_POST['digi']);
	  $etage	     	= trim($_POST['etage']);
	  $porte	     	= trim($_POST['porte']);
	  $telfixe	     	= trim($_POST['telfixe']);
	  $telport	     	= trim($_POST['telport']);
	  $adressemail	    = trim($_POST['adressemail']);
	  $adressiden	    = trim($_POST['adressiden']);
	  $rdvdate	     	= trim($_POST['rdvdate']);
	  $rdvheure	     	= trim($_POST['rdvheure']);
	  $ballon     		= trim($_POST['ballon']);
	  $pompe	     	= trim($_POST['pompe']);
	  $ecol	     		= trim($_POST['ecol']);
	  $econ	     		= trim($_POST['econ']);
	  $hab     			= trim($_POST['hab']);
	  $proprio     		= trim($_POST['proprio']);
	  $ener_renouv   	= trim($_POST['ener_renouv']);
	  $songez    		= trim($_POST['songez']);
	}
    
    /* Expression régulière permettant de vérifier si le 
    * format d'une adresse e-mail est correct */
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
    
    
    /* Si le formulaire n'est pas posté de notre site on renvoie 
    * vers la page d'accueil */
    if($_SERVER['HTTP_REFERER'] != 'http://www.solar17.fr/traitement_devis.php')
    {
      header('Location: http://www.solar17.fr');
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($civilite) 
           || empty($nom) 
           || empty($prenom) 
           || empty($adresse) 
           || empty($cp)
		   || empty($ville)
		   || empty($telfixe)
		   || empty($adressemail))
    {
      $alert = 'Tous les champs de la partie CLIENT doivent être renseignés.';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $adressemail))
    {
      $alert = 'L\'adresse '.$adressemail.' n\'est pas valide';
    }
    /* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
	
	/* Mise en page du message */
	$message = 'CLIENT :  "\r\n"
				"\r\n"
				Civilité : '.$civilite.' "\r\n"
				Nom : '.$nom.' "\r\n"
				Prénom : '.$prenom.' "\r\n"
				Adresse : '.$adresse.' "\r\n"
				Code Postal : '.$cp' "\r\n"
				Ville : '.$ville.' "\r\n"
				Digicode : '.$digi.' "\r\n"
				Etage : '.$etage.' "\r\n"
				Porte : '.$porte.' "\r\n"
				Tél. Fixe : '.$telfixe.' "\r\n"
				Tél. Port : '.$telport' "\r\n"
				Email : '.$adressemail.' "\r\n"
				"\r\n"
				CHANTIER : "\r\n"
				Adresse identique : '.$adresseiden.' "\r\n"
				"\r\n"
				RENDEZ-VOUS
				"\r\n"
				Quand ? '.$rdv_quand.' "\r\n"
				Heure ? '.$rdv_heure.' "\r\n"
				"\r\n"
				INTERET PRINCIPAL "\r\n"
				"\r\n"
				Ballon solaire : '.$ballon.' "\r\n"
				Pompe à chaleur : '.$pompe.' "\r\n"
				"\r\n"
				INTERET DU PROJET "\r\n"
				"\r\n"
				Ecologie : '.$ecol.' "\r\n"
				Economie : '.$econ.' "\r\n"
				"\r\n"
				LE FOYER "\r\n"
				"\r\n"
				Propriétaire depuis quand ? '.$proprio.' "\r\n"
				"\r\n"
				LE PROJET : "\r\n"
				"\r\n"
				Connaissez-vous les énergies renouvelables ? $ener_renouv "\r\n"
				Depuis quand y songez vous ? '.$songe.' "\r\n"
				"\r\n"
				OBSERVATION(S) COMPLEMENTAIRE(S) : '.$observ_comp.' \n
				"\r\n"
				"\r\n"
				CECI EST UN MESSAGE PROVENANT DU FORMULAIRE DE DEMANDE DE DEVIS DE http://www.solar17.fr "\r\n"
				"\r\n"
				"\r\n"
				by HENNEQUIN MORGAN'"\r\n";
    elseif (!isset($_COOKIE['sent']))
    {
        /* Destinataire  */
        $to = '[email protected]';
		/* Definition du sujet (ici tjs le même) */
		$sujet = 'DEMANDE DE DEVIS WEB';
      
        /* Construction du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'Ce mail a été envoyé depuis http://www.solar17.fr par '.$civilite.' '.$nom."\r\n\r\n";
        $msg .= 'Voici ça demande de devis:'."\r\n";
        $msg .= '***************************'."\r\n";
        $msg .= $message."\r\n";
        $msg .= '***************************'."\r\n";
        
        /* En-têtes de l'e-mail */
        $headers = 'From: '.$nom.' <'.$adressemail.'>'."\r\n\r\n";
        
        /* Envoi de l'e-mail */
        if (mail($to, $sujet, $msg, $headers))
        {
            $alert = 'Votre demande à été envoyé avec succès';
            
            /* On créé un cookie de courte durée (ici 120 secondes) pour éviter de 
            * renvoyer un mail en rafraichissant la page */
            setcookie("sent", "1", time() + 120);
            
            /* On détruit la variable $_POST */
            unset($_POST);
        }
        else
        {
            $alert = 'Erreur d\'envoi de votre demande';
        }
          
    }
    /* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    else
    {
        unset($_POST);
    }
}
?>
Je remercie d'avance la ou les personne(s) qui m'aideront ! Bon lundi à tous !

Morgan.

Re: Problème formulaire PHP et fonction mail

Posté : 28 mai 2012, 12:23
par moogli
salut,

As tu regardé la source HTML de la page générée ?

au pif je dirais qu'il y a tout ton code ?

si oui c'est simple => soit pas php n'est pas installé, soit ce n'est pas un fichier .php que utilise .....

p'tit conseil : si tu ne tiens à te faire spammer ta boite Gmail je te conseil te vire ton adresse email de code :)

@+

Re: Problème formulaire PHP et fonction mail

Posté : 28 mai 2012, 12:33
par ixdayz
Salut,

La source html, c'est le premier code que j'ai posté qui se trouve dans devis.html
Et le code php se trouve dans traitement_devis.php

J'ai installé easyphp qui est un pack ou tout est installé et sur l'hebergeur j'ai pas regardé, comment le voir ?

Merci pour le conseil ^^

Re: Problème formulaire PHP et fonction mail

Posté : 28 mai 2012, 13:05
par moogli
Quand tu affiche dans le navigateur traitement_devis.php et que tu regarde la source tu a bien tous le code php ? (ce qui serais logique vue le navigateur prend por une balise html le <?php et la fermeture le chevron fermant, >, avant la partie affichée.

Si oui (et même non d'ailleurs) c'est clairement que php n'est pas interprété.

Tu l'a mis où ce fichier traitement_devis.php ? (et pas de réponse en trois lettres autre que www :mrgreen: ).


@+

Re: Problème formulaire PHP et fonction mail

Posté : 28 mai 2012, 13:16
par ixdayz
Quand j'affiche le code source de la page je vois bien que le traitement php s'arrete ici :
 /* En-têtes de l'e-mail */
        $headers = 'From: '.$nom.' <'.$adressemail.'>'."\r\n\r\n"; // ici après le ">"
        
        /* Envoi de l'e-mail */
        if (mail($to, $sujet, $msg, $headers))
        {
            $alert = 'Votre demande à été envoyé avec succès';
            
            /* On créé un cookie de courte durée (ici 120 secondes) pour éviter de 
            * renvoyer un mail en rafraichissant la page */
            setcookie("sent", "1", time() + 120);
            
            /* On détruit la variable $_POST */
            unset($_POST);
        }
        else
        {
            $alert = 'Erreur d\'envoi de votre demande';
        }
          
    }
    /* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    else
    {
        unset($_POST);
    }
}
?>

Traitement_devis.php se trouve dans D:\EasyPHP-5.3.9\www

normalement ça colle ! mon service easy php sont bien demarrés bien entendu

Re: Problème formulaire PHP et fonction mail

Posté : 28 mai 2012, 13:24
par leboxeur5858
Bonjour tout le monde , j'ai créé un script php permettant d'uploader des fichiers et de les mettre dans un dossier sur mon disque dur et permettant ossi de stocker le nom et le chemin d' accés à ce fichier dans une table dans mysql , et j'ai ossi créé un script pour télécharger ce fichier , le malheur c'est que firefox me sort une erreur du genre le protocole (d) n'est associé à aucun programme .

voici le code de téléchargement :
<?php
// Connection à la base
mysql_connect("localhost","root","") or die("erreur de connexion au serveur");
mysql_select_db("utilisateur") or die("erreur de connexion a la base de donnees");
// On fait la requête
$r = "SELECT Nom,lien FROM save WHERE 1";
$sql = mysql_query($r);
// On fait une boucle pour chacune des lignes du résultat
while ($row = mysql_fetch_array($sql, MYSQL_ASSOC))
{
// Affichage des liens
print "<a href='" . $row['lien'] . "'>" . $row['Nom'] . "</a>\n";
}
// On libère la mémoire et on ferme la connection
mysql_free_result($sql);
mysql_close();
?>

Re: Problème formulaire PHP et fonction mail

Posté : 28 mai 2012, 14:21
par ixdayz
Re,

Je pense avoir trouvé mon erreur....

Le php ne s'executé pas car dans le navigateur l'url était de type : file:///D:/EasyPHP-5.3.2/www/.....

et si on passe par localhost : http://localhost/traitement_devis.php

le traitement php est bien effectué !

Erreur de débutant !

Merci à tous, la bise