8796 sujets

Développement web côté serveur, CMS

Bonjour à tous.

J'ai besoin d'idées pour résoudre mon souci.

Quand je teste ce bout de code en chrome ou en ie
en windows vista...
Cela fonctionne...
Par contre, de temps en temps, je reçois des messages
de personnes extérieures sans les valeurs du html,
comme $nom $prenom...
Je perds donc tout l'intérêt des messages !!!

Pouvez-vous m'aider à résoudre cela ?
Merci d'avance

voici formulaire00.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
...
</head>

<body onLoad="MM_preloadImages('images/bouton_devis_on.gif','images/bouton_acces_on.gif','images/bouton_infos_on.gif')">
<div id="site">
...
  <div id="contenu">
    <form action="php/traitement.php" method="post" name="myform" id="formulaire">
      <table width="840" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="95" height="30" valign="top">Vous &ecirc;tes<span class="texterouge">*</span></td>
          <td width="370" height="30" valign="top">
            <label><input type="radio" name="vousetes" value="Professionnel" checked>
            Professionnel</label>
            <label><input type="radio" name="vousetes" value="Particulier" >
            Particulier</label></td>
          <td width="375" height="30" valign="middle"><label for="concerne">Concerne : </label>
            <select name="concerne" id="concerne">
              <option value="NC">Ordre g&eacute;n&eacute;ral</option>
              <option value="CRE">Cr&eacute;ation</option>
              <option value="IMP">Impression </option>
              <option value="WEB">Web Design</option>
          </select></td>
          </tr>
        <tr>
          <td width="95" height="30" valign="top">Soci&eacute;t&eacute;</td>
          <td width="370" height="30" valign="top"><input name="societe" type="text" id="societe" size="50"></td>
          <td width="375" height="30" rowspan="7" valign="top"><label for="message5"></label>
          <textarea name="message" id="message5"></textarea></td>
          </tr>
        <tr>
          <td width="95" height="30" valign="top">Nom<span class="texterouge">*</span></td>
          <td width="370" height="30" valign="top"><input name="nom" type="text" id="nom" size="50"></td>
          </tr>
        <tr>
          <td width="95" height="30" valign="top">Pr&eacute;nom</td>
          <td width="370" height="30" valign="top"><input name="prenom" type="text" id="prenom" size="50"></td>
          </tr>
        <tr>
          <td width="95" height="30" valign="top">Adresse</td>
          <td width="370" height="30" valign="top"><input name="adresse" type="text" id="adresse" size="50"></td>
          </tr>
        <tr>
          <td width="95" height="30" valign="top">Code Postal</td>
          <td width="370" height="30" valign="top"><input name="codepostal" type="text" id="codepostal" size="10"></td>
          </tr>
        <tr>
          <td width="95" height="30" valign="top">Localit&eacute;<span class="texterouge">*</span></td>
          <td width="370" height="30" valign="top"><input name="localite" type="text" id="localite" size="50"></td>
          </tr>
        <tr>
          <td width="95" height="30" valign="top">Pays<span class="texterouge">*</span></td>
          <td width="370" height="30" valign="top"><select name="pays" id="pays">
            <option value="BE" selected>Choisissez, svp !</option>
            <option value="BE">Belgique</option>
            <option value="FR">France</option>
            <option value="CH">Suisse</option>
            <option value="LU">Luxembourg</option>
            <option value="NL">Pays-bas</option>
            <option value="NC">Autre pays</option>
          </select></td>
          </tr>
        <tr>
          <td width="95" height="30" valign="top">T&eacute;l / Gsm<span class="texterouge">*</span></td>
          <td width="370" height="30" valign="top"><input name="tel" type="text" id="tel" size="50"></td>
          <td width="375" height="30" align="right" valign="bottom">
          	<label for="envoi"></label>
            <input type="submit" name="envoi" id="envoi" value="Envoyer la demande">
            &nbsp;&nbsp;&nbsp;
            <label for="erase"></label>
          	<input type="reset" name="erase" id="erase" value="Effacer tout"></td>
        </tr>
        <tr>
          <td width="95" height="30" valign="top">E-mail<span class="texterouge">*</span></td>
          <td width="370" height="30" valign="top"><input name="email" type="text" id="email" size="50"></td>
          <td width="375" height="30" align="right" valign="top"></td>
          </tr>
        <tr>
          <td width="95" height="75" valign="top"> </td>
          <td width="370" height="90" valign="top"><div class="error_strings" id="myform_errorloc"></div></td>
          <td width="375" height="75" align="right" valign="top"></td>
          </tr>
        </table>

      <span class="texterouge"><span class="etoilepostscriptum">*</span></span><span class="postscriptum">Champs obligatoires</span>
    </form>
    
  <script language="JavaScript" type="text/javascript">
  var frmvalidator  = new Validator("myform");
  frmvalidator.EnableOnPageErrorDisplaySingleBox();
  frmvalidator.EnableMsgsTogether();
  frmvalidator.addValidation("message","req","Votre message est manquant !");
  frmvalidator.addValidation("email","req","Votre email est manquant !");
  frmvalidator.addValidation("email","email","Votre email n'est pas valide !");
  frmvalidator.addValidation("tel","req","Votre téléphone est manquant !");
  frmvalidator.addValidation("pays","dontselect=0","Votre pays est manquant !");
  frmvalidator.addValidation("localite","req","Votre localité est manquante !");
  frmvalidator.addValidation("nom","req","Votre nom est manquant !");
  </script>
  </div>
...
</div>
</body>
</html>


voici traitement.php

	date_default_timezone_set('Europe/Brussels');
	$jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"); 
	$mois = array("","Janvier",utf8_encode("Février"),"Mars","Avril","Mai","Juin","Juillet",utf8_encode("Août"),"Septembre","Octobre","Novembre",utf8_encode("Décembre"));

	$datefr = $jour[date("w")]." ".date("d")." ".$mois[date("n")]." ".date("Y");
	$heurefr = "- ".date("H:i:s");
	
	$vousetes = $_POST['vousetes'];
	$societe = $_POST['societe'];
	$nom = $_POST['nom'];
	$prenom = $_POST['prenom'];
	$adresse = $_POST['adresse'];
	$pays = $_POST['pays'];
	$codepostal = $_POST['codepostal'];
	$localite = $_POST['localite'];
	$tel = $_POST['tel'];
	$email = $_POST['email'];
	$concerne = $_POST['concerne'];
	$message = $_POST['message'];
	
	switch($concerne) {
		case 'CRE':
			$concerne = 'CREATION';
			break; 
		case 'IMP':
			$concerne = 'IMPRESSION';
			break; 
		case 'WEB':
			$concerne = 'WEB DESIGN';
			break; 
		default:
			$concerne = 'Ordre général';
			break; 
	}
	$societe = ucwords(strtolower($societe));
	$nom = strtoupper(strtolower($nom));
	$localite = strtoupper(strtolower($localite));
	$prenom = ucwords(strtolower($prenom));
	
	$destinataire1 = "bidule@truc.fr";
	$destinataire2 = $email;
	$objet1 = "Demande de Renseignements  www.truc.fr";
 
	$objet2 = "Copie de votre Demande de Renseignements sur  www.truc.fr";
 
	
	$msg = "\n";
	$msg .= "============================================================================\n";
	$msg .= "Message provenant d'un $vousetes\n";
	$msg .= "\n";
	$msg .= "Entreprise : $societe\n";
	$msg .= ">>> Contact : $nom $prenom\n";
	$msg .= "$adresse\n";
	$msg .= "$pays - $codepostal $localite\n";
	$msg .= "Tél : ".$tel."\n";
	$msg .= "Email : $email\n";
	$msg .= "\n\n";
	$msg .= "Concerne : $concerne\n";
	$msg .= "\n";
	$msg .= "Message :\n";
	$msg .= "$message\n";
	$msg .= "\n";
	$msg .= "============================================================================\n";
	$msg .= "\n";
	
	$entete = "From: truc <>\n";
	$entete .= "Reply-To: $destinataire2\n";
	$entete .= "Content-Type: text/plain; charset=UTF-8\n";
	$entete .= "Content-Disposition: inline\n";
	$entete .= "Content-Transfer-Encoding: 8bit\n";
	$entete .= "MIME-Version: 1.0\n";
	$entete .= "Date: $datefr $heurefr\n";
	
	$resultat = mail($destinataire1,$objet1,$msg,$entete);	
	if ($resultat == false) {
		Header("Location: ../formulaire02.html");
	} else {
		Header("Location: ../formulaire01.html");
	}

Modifié par jytest (18 Nov 2010 - 11:58)
Modérateur
Bonjour,

Apparemment, tu valides ton formulaire uniquement en Javascript. Il faut savoir qu'un utilisateur peut facilement désactiver le Javascript sur son navigateur et outre-passer ta validation.

Une règle d'or est de toujours valider côté serveur, ici en PHP, et ensuite ajouter la couche de validation Javascript.

Tu peux aussi vérifier ce qui se passe en te rendant directement sur php/traitement.php avec ton navigateur. Possible aussi que ce soit un robot qui se rendre à cette adresse et que cela soumet le formulaire. Simple hypothèse lancée au hasard.
Modifié par Tony Monast (18 Nov 2010 - 13:10)
Merci à toi pour ton passage.

Pourrais-tu être plus explicite ?
Intégrer un 2e code php...
Effectivement je ne fais la validation du formulaire qu'en javascript
je pensais que la validation n'était pas souhaitable en php...
Comment "obliger" l'internaute à actionner son javascript ?
Comment faire en php ?
Comment savoir si c'est un robot qui tente d'envoyer le formulaire ?

Beaucoup de questions, je sais.
Mais peux-tu y répondre pour m'aider ?
Modifié par jytest (18 Nov 2010 - 14:17)
Modérateur
La validation doit absolument se faire côté serveur, car tel qu'expliqué, l'utilisateur peut librement désactiver le Javascript sur son navigateur. D'un point de vue éthique, tu ne peux pas non plus forcer l'utilisateur à activer son Javascript pour utiliser un simple formulaire de contact.

Par exemple, ce que tu dois faire, c'est mettre ton formulaire HTML dans ta page index.php, mais aussi ton code de traitement. L'utilisateur restera ainsi toujours dans la même page s'il y a une erreur détectée en PHP. Lorsque le formulaire est valide, tu peux rediriger l'utilisateur vers une page de confirmation.
Modifié par Tony Monast (18 Nov 2010 - 14:53)
Comme je débute en php, javascript, ajax...,
j'aurai encore besoin d'un coup de main.

La page qui gère le formulaire est "formulaire.html".
L'envoi du mail est généré par "traitement.php".
La validation du formulaire se fait par "gen_validatorv31.js".

Comment faire tout cela en php ?
Pouvez-vous m'aider ou me fournir un bout de code
pour me lancer dans cette nouvelle étape ?

D'avance merci.
Modifié par jytest (18 Nov 2010 - 18:03)