formatage d'un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : formatage d'un formulaire

par thanos125 » 18 mars 2008, 13:14

voilà mnt ca marche .. en faite j'ai retiré ca :
	$f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_1)));
	$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_2)));
	$f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_3)));

	$f_5=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_5)));
	
et j'ai simplement laisser la ligne avec le code postal:
	$f_4=trim(eregi_replace("[^0-9+]", "", $f_4));
et mnt ca marche nickel

merci

par Ryle » 18 mars 2008, 12:53

Pas tout à fait... faut adapter un peu le nom des variables et l'endroit où l'utiliser.

L'idée, c'est dans l'entête du mail (et du mail uniquement), ajouter ces informations pour que le client qui affichera le mail sache comment il doit interpréter (et donc afficher) les caractères qu'il va rencontrer.

Ca se passe donc au niveau de la fonction mail() qui prend plusieurs arguments : un destinataire ("[email protected]"), un objet ($titre), un contenu ($corps) et un entête ($tete)

C'est ce dernier paramètre qu'il te faut donc modifier avant de le donner à la fonction mail, pour lui ajouter ces infos supplémentaires :)

par thanos125 » 18 mars 2008, 12:37

Si tu envois un mail encodé en utf8, il te faut le spécifier dans l'entête du mail, sans quoi c'est le pauvre client de messagerie qui va être tout paniqué et pas savoir comment l'afficher ;)
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";
Voir les commentaires postés dans la doc de la fonction mail() :)


Merci pour tes réponse c'est génial d'être disponible comme ca!!!! =D> =D>

si j'ai bien compris...
<?php


if(isset($_POST['submit'])){
    $erreur="";
    // Nettoyage des entr&eacute;es
    while(list($var,$val)=each($_POST)){
    if(!is_array($val)){
        $$var=strip_tags($val);
    }else{
        while(list($arvar,$arval)=each($val)){
                $$var[$arvar]=strip_tags($arval);
            }
        }
    }

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";


    // Formatage des entrées
    
    $f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_1)));
    $f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_2)));
    $f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_3)));
    $f_4=trim(eregi_replace("[^0-9+]", "", $f_4));
    $f_5=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_5)));
    
    $f_7=trim(ucfirst(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_7)));
                                     
    
    $f_6=strip_tags(trim($f_6));
    
    // Verification des champs
    if(strlen($f_1)<2){
        $erreur.="<li><span class='txterror'>Le champ &laquo; Nom &raquo; est vide ou incomplet.</span>";
        $errf_1=1;
    }
    if(strlen($f_2)<2){
        $erreur.="<li><span class='txterror'>Le champ &laquo; Prenom &raquo; est vide ou incomplet.</span>";
        $errf_2=1;
    }
    if(strlen($f_3)<2){
        $erreur.="<li><span class='txterror'>Le champ &laquo; Adresse,numéro est vide ou incomplet.</span>";
        $errf_3=1;
    }
    if(strlen($f_4)<2){
        $erreur.="<li><span class='txterror'>Le champ &laquo; Code postal &raquo; est vide ou incomplet.</span>";
        $errf_4=1;
    }
    if(strlen($f_5)<2){
        $erreur.="<li><span class='txterror'>Le champ &laquo; Localité; &raquo; est vide ou incomplet.</span>";
        $errf_5=1;
    }
    if(strlen($f_7)<2){
        $erreur.="<li><span class='txterror'>Le champ &laquo; Question &raquo; est vide ou incomplet.</span>";
        $errf_7=1;
    }
    if($erreur==""){
        // Cr&eacute;ation du message
        $titre="Fiche Formulaire contact";
        $tete="From:[email protected]\n";
        
        $corps.="Nom : ".$f_1."\n";
        
        $corps.="Prenom : ".$f_2."\n";
        
        $corps.="Adresse,num : ".$f_3."\n";
        
        $corps.="Code postal : ".$f_4."\n";
        
        $corps.="Localite; : ".$f_5."\n";
        
        $corps.="Email : ".$f_6."\n";
        
        $corps.="Question : ".$f_7."\n";
        
        if(mail("[email protected]", $titre, stripslashes($corps), $tete)){
            $ok_mail="true";
        }else{
            $erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
        } 


je doit le mettre comme ça? déso mais avce le php c'est pas facile
:lol: , c'est bien pour ca que je suis passer par un générateur de formulaire....

par hasard tu ne connais pas un bon générateur de formualire qui marche :lol:


merci c'est gentil

par Ryle » 18 mars 2008, 12:20

Si tu envois un mail encodé en utf8, il te faut le spécifier dans l'entête du mail, sans quoi c'est le pauvre client de messagerie qui va être tout paniqué et pas savoir comment l'afficher ;)
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";
Voir les commentaires postés dans la doc de la fonction mail() :)

par thanos125 » 18 mars 2008, 11:43

tu a raison ryle :)

mais le problème tu vois lorsque j'envoie mon mail... la page suivante résume mon formulaire en me disans que le formulaire a bien été envoyer ....

là a ce moment là ca s'affiche correctement sauf les "ç" qui devienne des �


par contre lorsque je reçois le mail dans ma boite de message, tout les caractères accentué déconne...

je sais pas quoi faire... pour que ca marche

par Ryle » 18 mars 2008, 11:10

Vi, mais je maintiens que les scripts, les styles et autres ne sont pas nécessaires ;) Ma remarque avait aussi pour but de te faire adopter la démarche de filtrer tes recherches de bug en ne te préoccupant que de ce qui peut réellement en être la cause :)

Quant à la présence de tes balises, effectivement, elles sont là, et même plutôt deux fois qu'une, mais c'est peut être une de trop pour le pauvre navigateur qui va devoir l'afficher :

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
Ta page est en utf8 ou en iso-8859-2 ? :)

par thanos125 » 18 mars 2008, 10:36

>>ryle.. c'est pour ça que j'avais mis tout le code de ma page dès le début... vous auriez vu que j'avais bien mis mes balises.... je vous redonne tout le code .... mais je ne comprend pas pcq mais balise sont bien là....
<?php

// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n��tes pas certain de ce que vous faites !
if(isset($_POST['submit'])){
	$erreur="";
	// Nettoyage des entr&eacute;es
	while(list($var,$val)=each($_POST)){
	if(!is_array($val)){
		$$var=strip_tags($val);
	}else{
		while(list($arvar,$arval)=each($val)){
				$$var[$arvar]=strip_tags($arval);
			}
		}
	}
	// Formatage des entr&eacute;es
	
	$f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_1)));
	$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_2)));
	$f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_3)));
	$f_4=trim(eregi_replace("[^0-9+]", "", $f_4));
	$f_5=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_5)));
	
	$f_7=trim(ucfirst(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_7)));
	                                 
	
	$f_6=strip_tags(trim($f_6));
	
	// Verification des champs
	if(strlen($f_1)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Nom &raquo; est vide ou incomplet.</span>";
		$errf_1=1;
	}
	if(strlen($f_2)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Prenom &raquo; est vide ou incomplet.</span>";
		$errf_2=1;
	}
	if(strlen($f_3)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Adresse,numéro est vide ou incomplet.</span>";
		$errf_3=1;
	}
	if(strlen($f_4)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Code postal &raquo; est vide ou incomplet.</span>";
		$errf_4=1;
	}
	if(strlen($f_5)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Localité; &raquo; est vide ou incomplet.</span>";
		$errf_5=1;
	}
	if(strlen($f_7)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Question &raquo; est vide ou incomplet.</span>";
		$errf_7=1;
	}
	if($erreur==""){
		// Cr&eacute;ation du message
		$titre="Fiche Formulaire contact";
		$tete="From:[email protected]\n";
		
		$corps.="Nom : ".$f_1."\n";
		
		$corps.="Prenom : ".$f_2."\n";
		
		$corps.="Adresse,num : ".$f_3."\n";
		
		$corps.="Code postal : ".$f_4."\n";
		
		$corps.="Localite; : ".$f_5."\n";
		
		$corps.="Email : ".$f_6."\n";
		
		$corps.="Question : ".$f_7."\n";
		
		if(mail("[email protected]", $titre, stripslashes($corps), $tete)){
			$ok_mail="true";
		}else{
			$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
		}
	}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">


<head>

<!-- debut css formulaire-->
<style type="text/css" media="screen"><!--
input {
background-color:#fbecf3;
color:#935d93;
font-family:verdana,Arial,Helvetica,Geneva,Swiss,SunSans-Regular;
font-size:11px;
}
select {
background-color:#fbecf3;
color:#935d93;
font-family:verdana,Arial,Helvetica,Geneva,Swiss,SunSans-Regular;
font-size:11px;
}
textarea {
background-color:#fbecf3;
color:#935d93;
font-family:verdana,Arial,Helvetica,Geneva,Swiss,SunSans-Regular;
font-size:11px;
}
.txterror {
color:red;
font-family:Verdana,Arial,Helvetica,Geneva,Swiss,SunSans-Regular;
font-size:11px;
}
.txtform {
color:#935d93;
font-family:Verdana,Arial,Helvetica,Geneva,Swiss,SunSans-Regular;
font-size:12px;
}
--></style>

<!-- fin css formulaire-->







<!-- Javascript - Fix the flash of unstyled content -->
<script type="text/javascript"></script>
<!-- Stylesheets -->
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
<!-- end Stylesheet -->
<!-- Meta Information -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="cache-control" content="public" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="expires" content="never" />
<meta name="language" content="en-gb" />
<meta name="MSSmartTagsPreventParsing" content="true" />
<meta name="robots" content="index, follow" />
<meta name="revisit-after" content="14 days" />
<meta name="keywords" content="" />
<meta name="description" content="" />
</head>

par Ryle » 17 mars 2008, 18:28

C'est pas con du tout :)

Les caractères "é" sont typiques d'un mauvais encodage de chaine entre iso et utf8 :)
En applicant donc le bon charset ou en encodant/décodant les données (utf8encode() / utf8decode()) cela devrait fonctionner.

par BaLiSTiK » 17 mars 2008, 18:03

C est ptete con ce que je vais dire, mais ptete tout simplement le charset dans les balises <head> ?

par thanos125 » 17 mars 2008, 16:32

ok je nettoie ca tt de suite merci

Re: formatage d'un formulaire

par Ryle » 17 mars 2008, 16:11

bonjour à tous et toutes, j'ai un problème avec le résulat de mon formulaire, il s'envoie bien mais lorsque je le reçois, certain caractère ne s'affiche pas correctement
D'accord... mais lesquels ? Tu peux nous donner un exemple de ce qui est entré dans le formulaire ? et naturellement un exemple de ce que tu obtiens ? et nous dire à quel endroit du l'obtiens ? dans la partie php ? dans un if ? du côté de l'erreur ? dans la partie html ? .... on a besoin de concret :)
voici le code de mon formulaire:
Ce serait bien de faire un peu de ménage dans le code pour nous donner effectivement le code du formulaire et pas de toute la page... je doute que tes styles, tes scripts de tracking, tes méta données... ne concernent le problème. Nous irions (et toi également) plus vite pour identifier le problème si tu enlèves tout ce qui est superflux :) (et pense à utiliser les balises [ php ] pour du code en php, la coloration syntaxique révèle souvent bien des choses :))

formatage d'un formulaire

par thanos125 » 17 mars 2008, 15:58

bonjour à tous et toutes, j'ai un problème avec le résulat de mon formulaire, il s'envoie bien mais lorsque je le reçois, certain caractère ne s'affiche pas correctement

j'ai générer se formulaire via ce site : http://www.ge-net.ch/page/rw-wfco-owb-0.html

voici le code de mon formulaire:


<?php


if(isset($_POST['submit'])){
	$erreur="";
	// Nettoyage des entr&eacute;es
	while(list($var,$val)=each($_POST)){
	if(!is_array($val)){
		$$var=strip_tags($val);
	}else{
		while(list($arvar,$arval)=each($val)){
				$$var[$arvar]=strip_tags($arval);
			}
		}
	}
	// Formatage des entrées
	
	$f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_1)));
	$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_2)));
	$f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_3)));
	$f_4=trim(eregi_replace("[^0-9+]", "", $f_4));
	$f_5=trim(ucwords(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_5)));
	
	$f_7=trim(ucfirst(eregi_replace("[^a-zA-Z0-9|é|è|à|ä|ö|ê|\ -]", "", $f_7)));
	                                 
	
	$f_6=strip_tags(trim($f_6));
	
	// Verification des champs
	if(strlen($f_1)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Nom &raquo; est vide ou incomplet.</span>";
		$errf_1=1;
	}
	if(strlen($f_2)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Prenom &raquo; est vide ou incomplet.</span>";
		$errf_2=1;
	}
	if(strlen($f_3)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Adresse,numéro est vide ou incomplet.</span>";
		$errf_3=1;
	}
	if(strlen($f_4)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Code postal &raquo; est vide ou incomplet.</span>";
		$errf_4=1;
	}
	if(strlen($f_5)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Localité; &raquo; est vide ou incomplet.</span>";
		$errf_5=1;
	}
	if(strlen($f_7)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Question &raquo; est vide ou incomplet.</span>";
		$errf_7=1;
	}
	if($erreur==""){
		// Cr&eacute;ation du message
		$titre="Fiche Formulaire contact";
		$tete="From:[email protected]\n";
		
		$corps.="Nom : ".$f_1."\n";
		
		$corps.="Prenom : ".$f_2."\n";
		
		$corps.="Adresse,num : ".$f_3."\n";
		
		$corps.="Code postal : ".$f_4."\n";
		
		$corps.="Localite; : ".$f_5."\n";
		
		$corps.="Email : ".$f_6."\n";
		
		$corps.="Question : ".$f_7."\n";
		
		if(mail("[email protected]", $titre, stripslashes($corps), $tete)){
			$ok_mail="true";
		}else{
			$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
		}
	}
}
?>


lorsque j'envoie le mail j'ai ce message de confimation:
-----------------------------------------------------------------------------

Le message ci-dessous nous a bien été transmis, et nous vous en remercions.

Nom : Grégory
Prenom : Alévèque
Adresse,num : Rue Des Carmé32
Code postal : 4858
Localite; : Biêvre
Email : [email protected]
Question : Je voudrait des renseignement sur é è à �( ce symbole doit être ç )

Nous allons y donner suite dans les meilleurs délais.

---------------------------------------------------------------------------------

Ce que je reçois dans ma boite mail:

Nom : Grégory
Prenom : Alévèque
Adresse,num : Rue Des Carmé32
Code postal : 4858
Localite; : Biêvre
Email : [email protected]
Question : Je voudrait des renseignement sur é è à Ã

-----------------------------------------------------------------------------------



merci de votre aide