salut à tous
,
Je tiens à m'excuser d'avance pour la longueur du message qui suit mais je vois pas comment raccourcir ...
Bref, je suis débutant en php et je code en ce moment une page pour valider un formulaire . Le seul problème c'est que si tout est bien rempli un mail doit normalement être envoyé à une adresse mail avec toutes les infos qui conviennent . Mais ... Même lorsque la personne marque des conneries le mail est quand même envoyé . Je vais pas tout de suite mettre mon code parce que je l'ai pas fait d'une traite mais en plusieurs jours et il est franchement bordélique avec des empty quand il en faut pas des isset inutiles que j'ai pas encore corrigés . Je préfère d'abord expliquer ce que j'ai fait , en effet je sais pas du tout si ma façon de coder est la bonne , et au vu du code qui va suivre (pas d'indentations à cause de jv.com ...) je tiens à éclaircir un peu le code qui à première vu est très mal fait .
Explications :
J'ai 4 types de formulaires possibles selon ce que souhaite le client , s'il veut une formation dif par exemple il va sur un formulaire DIF . En réalité ces 4 formulaires ne sont qu'un seul et même formulaire qui n'affiche pas les mêmes choses en fonction du $_GET qu'il reçoit .
A la fin il y a un petit captcha (même pas une image, juste du texte à écrire) et le bouton envoyer .
Je reçois ces infos dans une page que j'ai appelée validation.php où je traite ce que je reçois de la façon suivante : en tout premier lieu j'enregistre immédiatement ce qu'il a rentré dans des cookies (bien sûr sécurisés avec htmlspecialchars) , je fais ça pour éviter qu'en cas d'erreur la personne ait tout à retaper et puis ça permet de garder ses infos en mémoire pour éviter qu'ils les retapent s'il revient 1 semaine plus tard par exemple . Bref , ensuite je vérifie si le captcha est bien rempli , s'il ne l'est pas alors j'utilise une fonction que j'ai appelée redirection qui redirige sur le formulaire avec l'affichage d'une erreur . Si le captcha est rempli alors je vérifie que les informations de base comme le nom, numéro de téléphone ... soient corrects . Sinon je redirige avec un autre message d'erreur . Ces infos de base étant présentes sur tous les formulaires , je les vérifie en premier sans faire de distinction avec les $_GET . Une fois que c'est fait, si tout va bien je commence à faire des distinctions . 3 des formulaires sur les 4 ont une partie entreprise à remplir par exemple seul celui qui renvoit dans l'url le paramètre "lien" ne l'a pas . Donc je le sépare du reste avec un if(!isset($_GET['lien'])){...} else { lien ...}
Une fois que c'est fait je vérifie pour chaque formulaire ce qui va et je fait un message personnalisé pour chaque partie .
A la fin j'envoie le mail et je fais un petit compteur à chaque fois pour savoir le nombre de formulaires envoyés .
bref , trêve de bavardages je vous donne mon code :
function redirection($type_erreur)
{
if (isset($_GET['audit']))
{
header('Location:
formulaire_de_contact_audit.php?erreur='.$type_err
eur);
}
elseif(isset($_GET['recrutement']))
{
header('Location:
formulaire_de_contact.php?recrutement='.$_GET['rec
rutement'].'&erreur='.$type_erreur);
}
elseif(isset($_GET['lien']))
{
header('Location:
formulaire_de_contact.php?lien&erreur='.$type_erre
ur);
}
else
{
header('Location:
formulaire_de_contact.php?erreur='.$type_erreur);
}
return $type_erreur;
}
echo 'redirection en cours ...';
try
{
$bdd = new
PDO('mysql:host=localhost;dbname=bdd_JV.COM','root
','');
}
catch(Exception $e)
{
die('Erreur survenue : '.$e->getMessage());
}
if(isset($_POST['nom_societe']))// on enregistre d'abord des cookies pour éviter que l'utilisateur ait tout à reécrire en cas d'erreur
{
setCookie('nom_societe',htmlspecialchars($_POST['
nom_societe']),time()+(24*3600*365*2),NULL,NULL,FA
LSE,TRUE);
setCookie('code_postal_societe',htmlspecialchars(
$_POST['code_postal_societe']),time()+(24*3600*365
}
if(isset($_POST['activite_societe'])){setCookie('
activite_societe',htmlspecialchars($_POST['activit
e_societe']),time()+(24*3600*365*2),NULL,NULL,FALS
E,TRUE);}
if(isset($_POST['adresse_societe'])){setCookie('a
dresse_societe',htmlspecialchars($_POST['adresse_s
ociete']),time()+(24*3600*365*2),NULL,NULL,FALSE,T
RUE);}
if(isset($_POST['ville_societe'])){setCookie('vil
le_societe',htmlspecialchars($_POST['ville_societe
']),time()+(24*3600*365*2),NULL,NULL,FALSE,TRUE);}
setCookie('nom',htmlspecialchars($_POST['nom']),t
ime()+(24*3600*365*2),NULL,NULL,FALSE,TRUE);
setCookie('prenom',htmlspecialchars($_POST['preno
m']),time()+(24*3600*365*2),NULL,NULL,FALSE,TRUE);
setCookie('telephone',htmlspecialchars($_POST['te
lephone']),time()+(24*3600*365*2),NULL,NULL,FALSE,
TRUE);
if(isset($_POST['activite'])){
setCookie('activite',htmlspecialchars($_POST['acti
vite']),time()+(24*3600*365*2),NULL,NULL,FALSE,TRU
E);}
if(isset($_POST['mail'])){
setCookie('mail',htmlspecialchars($_POST['mail']),
time()+(24*3600*365*2),NULL,NULL,FALSE,TRUE);}
if(!empty($_POST['captcha']) AND $_POST['captcha']==$_POST['code'])//si le code du captcha est correct .
{
if(!empty($_POST['nom']) AND !empty($_POST['prenom']) AND !empty($_POST['telephone']) AND preg_match('#^0([0-9][ /._-]*){9}$#',$_POST['telephone']))
{// on vérifier que les informations de bases soient entrées et correctes .
if(!isset($_GET['lien']))//pour tous les formulaires destinés aux entreprises...
{
if(!empty($_POST['nom_societe']) AND !empty($_POST['code_postal_societe']) AND
preg_match('#[0-9]{5}#',$_POST['code_postal_societ
e']))//...on vérifie les variables obligatoires
{
// partie 2 des formulaires de type 'entreprise'
if(isset($_GET['audit']))
{
$sujet='JV.com - Demande d\'audit';// on crée l'objet du mail en fonction du formulaire envoyé .
if(isset($_POST['audit_sante']) AND $_POST['audit_sante']!= )
{
$cont_part3_s='<br/> secteur santé : '.htmlspecialchars($_POST['audit_sante']);
}
else
{
$cont_part3_s= ;
}
if(isset($_POST['audit_alimentaire']) AND $_POST['audit_alimentaire']!= )
{
$cont_part3_a='<br/> secteur alimentaire : '.htmlspecialchars($_POST['audit_alimentaire']);
}
else
{
$cont_part3_a= ;
}
if(isset($_POST['audit_tertiaire']) AND $_POST['audit_tertiaire']!=)
{
$cont_part3_t='<br/> secteur tertiaire : '.htmlspecialchars($_POST['audit_tertiaire']);
}
else
{
$cont_part3_t = ;
}
$cont_part3 = '<fieldset><legend>Demande
d\'Audit</legend>'.$cont_part3_s.$cont_part3_a.$co
nt_part3_t.'</fieldset>';
}
elseif(isset($_GET['recrutement']))
{
$sujet = 'jv;com - Demande de recrutement';
$tab_recrutement= array();
$tab_recrutement_secteur= array();
$tab_contrat = array();
$tab_duree_JJ = array();
$tab_duree_MM = array();
$tab_duree_AAAA = array();
for($i1=1;$i1<=3;$i1++)
{
for($i2=1;$i2<=3;$i2++)
{
if(isset($_POST['choix_recrutement_'.$i1.'
_'.$i2]) AND
!empty($_POST['choix_recrutement_'.$i1.'_'.$i2]))
{
$tab_recrutement[]=$_POST['choix_recrutement_'.$i1
.'_'.$i2];
if($i1==1)
{
$tab_recrutement_secteur[] .= 'santé : ';
}
elseif($i1==2)
{
$tab_recrutement_secteur[] .= 'alimentaire : ';
}
else
{
$tab_recrutement_secteur[] .= 'tertiaire : ';
}
if(isset($_POST['type_de_contrat_'.$i1.'_'.$i2]) AND !empty($_POST['type_de_contrat_'.$i1.'_'.$i2]))
{
$tab_contrat[] .= $_POST['type_de_contrat_'.$i1.'_'.$i2];
}
else
{
$tab_contrat[] .= 'non précisé';
}
if(isset($_POST['date_embauche_JJ_'.$i1.'_'.$i2]) AND !empty($_POST['date_embauche_JJ_'.$i1.'_'.$i2]))
{
$tab_duree_JJ[] .= $_POST['date_embauche_JJ_'.$i1.'_'.$i2];
}
else
{
$tab_duree_JJ[] .= 'NC';
}
if(isset($_POST['date_embauche_MM_'.$i1.'_'.$i2]) AND !empty($_POST['date_embauche_MM_'.$i1.'_'.$i2]))
{
$tab_duree_MM[] .= $_POST['date_embauche_MM_'.$i1.'_'.$i2];
}
else
{
$tab_duree_MM[] .= 'NC';
}
if(isset($_POST['date_embauche_AAAA_'.$i1.'_'.$i2]
) AND
!empty($_POST['date_embauche_AAAA_'.$i1.'_'.$i2]))
{
$tab_duree_AAAA[] .= $_POST['date_embauche_AAAA_'.$i1.'_'.$i2];
}
else
{
$tab_duree_AAAA[] .= 'NC';
}
}
}
}
$cont_part3_1 = '';
for($i=0;$i<count($tab_recrutement);$i++)
{
$cont_part3_1 .= '<br/> Formation secteur ';
$cont_part3_1 .= $tab_recrutement_secteur[$i];
$cont_part3_1 .= $tab_recrutement[$i].'<br/>';
$cont_part3_1 .= ' Type de contrat :'.$tab_contrat[$i].'<br/>';
$cont_part3_1 .= ' Date d\'embauche :
'.$tab_duree_JJ[$i].'/'.$tab_duree_MM[$i].'/'.$tab
_duree_AAAA[$i].'<br/>';
}
$cont_part3 = '<fieldset><legend>Recrutement(s)
demandés(s)</legend>'.$cont_part3_1.'</fieldset>';
}
else
{
echo 'formation entreprise remplie';
$sujet = 'jv.com - Demande de formation';
$tab_formation= array();
$tab_formation_secteur= array();
for($i1=1;$i1<=3;$i1++)
{
for($i2=1;$i2<=3;$i2++)
{
if(isset($_POST['choix_formation_'.$i1.'_'
.$i2]) AND !empty($_POST['choix_formation_'.$i1.'_'.$i2]))
{
$tab_formation[]=$_POST['choix_formation_'.$i1.'_'
.$i2];
if($i1==1)
{
$tab_formation_secteur[] .= 'santé : ';
}
elseif($i1==2)
{
$tab_formation_secteur[] .= 'alimentaire : ';
}
else
{
$tab_formation_secteur[] .= 'tertiaire : ';
}
}
}
}
$cont_part3_1 = '';
for($i=0;$i<count($tab_formation);$i++)
{
$cont_part3_1 .= '<br/> Formation secteur ';
$cont_part3_1 .= $tab_formation_secteur[$i];
$cont_part3_1 .= $tab_formation[$i].'<br/>';
}
$cont_part3_2 = '';
if(isset($_POST['formation_lieu']) AND !empty($_POST['formation_lieu']))
{
$cont_part3_2 .= '<br/> Lieu de la formation : '.$_POST['formation_lieu'];
}
if(isset($_POST['formation_participants']) AND !empty($_POST['formation_participants']))
{
$cont_part3_2 .= '<br/> Nombre de participants : '.$_POST['formation_participants'];
}
if(isset($_POST['formation_financement']) AND !empty($_POST['formation_financement']))
{
$cont_part3_2 .= '<br/> Financement de la formation : '.$_POST['formation_financement'];
}
if(isset($_POST['formation_budget']) AND !empty($_POST['formation_budget']))
{
$cont_part3_2 .= '<br/> Budget prévisionnel en kiloeuros : '.htmlspecialchars($_POST['formation_budget']);
}
if(isset($_POST['formation_besoin']) AND !empty($_POST['formation_besoin']))
{
$cont_part3_2 .= '<br/> Description du besoin du client : '.htmlspecialchars($_POST['formation_besoin']);
}
if(isset($_POST['formation_besoin_autre']) AND !empty($_POST['formation_besoin_autre']) AND $_POST['formation_besoin_autre']!= 'non')
{
$cont_part3_2 .= '<br/> Le client a un autre besoin : '.$_POST['formation_besoin_autre'];
}
if(isset($_POST['formation_precision_besoin'
]) AND !empty($_POST['formation_precision_besoin']))
{
$cont_part3_2 .= '<br/> Description des autres besoins du clients :
'.htmlspecialchars($_POST['formation_precision_bes
oin']);
}
$cont_part3 = '<fieldset><legend>Formation(s)
demandées(s)</legend>'.$cont_part3_1.'</fieldset><
br/><fieldset><legend>Financement de la formation</legend>'.$cont_part3_2.'</fieldset>';
}
if(isset($_POST['activite_societe']) AND $_POST['activite_societe']!= )
{
$cont_part2_s='<br/> Activité de la société :'.htmlspecialchars($_POST['activite_societe']);
}
else
{
$cont_part2_s=;
}
if(isset($_POST['ville_societe']) AND $_POST['ville_societe']!= )
{
$cont_part2_v='<br/> Ville :'.htmlspecialchars($_POST['ville_societe']);
}
else
{
$cont_part2_v=;
}
if(isset($_POST['adresse_societe']) AND $_POST['adresse_societe']!= )
{
$cont_part2_a='<br/> Adresse :'.htmlspecialchars($_POST['adresse_societe']);
}
else
{
$cont_part2_a=;
}
$cont_part2= '<br/><fieldset> <legend>Informations sur l\'entreprise:</legend><br/>Nom de la societe : '.htmlspecialchars($_POST['nom_societe']).'<br/> Code postal
:'.htmlspecialchars($_POST['code_postal_societe'])
.$cont_part2_s.$cont_part2_v.$cont_part2_a.'</fiel
dset>';
}
else
{
redirection(3);
}
}
else
{
$sujet='jv.com - Demande de Formation DIF';
if(isset($_POST['choix_formation_1_1']) AND !empty($_POST['choix_formation1_1']))
{
$cont_part2='<br/><fieldset><legend>DIF</legen
d><br/> Nom de la formation :
'.htmlspecialchars($_POST['choix_formation_1_1']).
'</fieldset>';
}
else
{
$cont_part2= ;
}
$cont_part3= ;
}
if(isset($_POST['activite']) AND $_POST['activite']!= )
{
$cont_part1_a='<br/> activite :'.htmlspecialchars($_POST['activite']);
}
else
{
$cont_part1_a=;
}
if(isset($_POST['mail']) AND $_POST['mail']!= )
{
$cont_part1_m='<br/> E-mail :'.htmlspecialchars($_POST['mail']);
}
else
{
$cont_part1_m=;
}
$cont_part1= '<fieldset> <legend>Informations personnelles du client</legend> <br/> Nom :'.htmlspecialchars($_POST['nom']).'<br/> Prénom :'.htmlspecialchars($_POST['prenom']).'<br/> Téléphone
:'.htmlspecialchars($_POST['telephone']).$cont_par
t1_m.$cont_part1_a;
$message =
$cont_part1.'</fieldset><br/>'.$cont_part2.'<br/>'
.$cont_part3.'<br/><br/><br/>Si des champs sont vides ou manquants cela signifie que le client ne les a pas rempli';
$From = "From: l'adresse mail@blabla...com \n";
$From .= "MIME-version: 1.0\n";
$From .= "Content-type: text/html; charset= iso-8859-1\n";
$req=$bdd->query('SELECT * FROM visiteurs WHERE ID = 2');
$donnees=$req->fetch();
$req->closeCursor();
if(!isset($type_erreur))
{
$mail = mail('vous n'aurez pas mon mail owned@doubleowned;com',$sujet.' n° formulaire '.$donnees['total_visiteurs'],$message,$From);
}
if(isset($mail) AND $mail=TRUE)
{
$confirmation_envoi = TRUE;
header('Location: confirmation.php');
}
else
{
redirection(4);
}
}
else
{
redirection(2);
}
}
else
{
redirection(1);
}
if(isset($confirmation_envoi) AND $confirmation_envoi == TRUE)
{
$req=$bdd->query('SELECT * FROM visiteurs WHERE ID = 2');
$donnees=$req->fetch();
$req->CloseCursor();
$req=$bdd->prepare('UPDATE visiteurs SET total_visiteurs=? WHERE ID = 2');
$req->execute(array($donnees['total_visiteurs']+
1));
$req->CloseCursor();
}
Je précise que j'ai remplacé le nom de l'entreprise par jv.com
Et dieu inventa les wall.... paste ton code (wall.deblan,fr, pastebinit, etc)
Pourquoi utiliser les cookies ? Les Sessions sont mieux dans ce cas nan ?