source: spip-zone/_squelettes_/escal/branche_V3/formulaires/contact.php @ 107581

Last change on this file since 107581 was 107581, checked in by jcvilleneuve@…, 3 years ago

Escal V3 : correction d'un bug de la page contact avec certaines configurations php/apache

File size: 6.6 KB
Line 
1<?php
2
3// Un énorme merci à Arnaud Bérard pour son aide
4
5if (!defined("_ECRIRE_INC_VERSION")) return;
6
7function formulaires_contact_charger_dist(){
8        $valeurs = array(
9            'nom'=>'',
10            'prenom'=>'',
11            'email'=>'',
12            'champsup1'=>'',
13            'champsup2'=>'',
14            'sujet'=>'',
15            'checkbox'=>'',
16            'Antispam'=>'',
17            'message'=>''
18        );
19
20        return $valeurs;
21}
22
23function formulaires_contact_verifier_dist(){
24        include_spip('inc/config');
25        include_spip('inc/filtres');
26
27        $erreurs = array();
28
29        // verifier que les champs nom et prenom sont bien la :
30        foreach(array('nom','prenom') as $obligatoire)
31                if (!_request($obligatoire)) $erreurs[$obligatoire] = _T('info_obligatoire_02'); 
32
33
34
35        // Si le champ mail est active dans la configuration de escal
36        if(lire_config('escal/config/contactmail') == 'oui'){
37            $email = _request('email');
38            // verifier si un email a ete saisi
39            if (!_request('email')) {
40                    $erreurs['email'] = _T('info_obligatoire_02');       
41            }
42            // Verifier que c'est une adresse valide
43            else if(!preg_match("#^[0-9A-Za-z]([-_.]?[0-9A-Za-z])*@[0-9A-Za-z]([-_.]?[0-9A-Za-z])*\\.[A-Za-z]{2,4}$#",$email)){
44                    $erreurs['email'] = _T('escal:contact_alerte_mail');
45            }
46        }
47
48        // Si les autres champs sont actives dans la configuration de escal
49          if (!_request('champsup1') AND lire_config('escal/config/champsup1') == 'oui' AND lire_config('escal/config/champsup1oblig') == 'oui' ) 
50              $erreurs['champsup1'] = _T('info_obligatoire_02');             
51          if (!_request('champsup2') AND lire_config('escal/config/champsup2') == 'oui' AND lire_config('escal/config/champsup2oblig') == 'oui' ) 
52              $erreurs['champsup2'] = _T('info_obligatoire_02'); 
53          if (!_request('sujet') AND lire_config('escal/config/radio') == 'oui' AND lire_config('escal/config/radiooblig') == 'oui' ) 
54              $erreurs['sujet'] = _T('info_obligatoire_02');
55          if (!_request('checkbox') AND lire_config('escal/config/checkbox') == 'oui' AND lire_config('escal/config/checkboxoblig') == 'oui' ) 
56              $erreurs['checkbox'] = _T('info_obligatoire_02');       
57
58
59        // verification du message       
60        $test_message = nocode(_request('message'));
61            // verifier si un message a ete saisi
62            if (!_request('message')) {
63                    $erreurs['message'] = _T('escal:contact_alerte_message');       
64            }
65            // Verifier que c'est un message valide
66            else if($test_message==FALSE){
67                    $erreurs['message']=_T('escal:contact_alerte_interdit').$test_message;
68            }                   
69
70        // message general si oubli ou erreur
71        if (count($erreurs))
72                $erreurs['message_erreur'] = _T('escal:contact_alerte_entete');
73
74        return $erreurs;
75}
76
77function formulaires_contact_traiter_dist(){
78
79        include_spip('inc/config');
80
81        $champs = array(
82            'nom'  => _request('nom'),
83            'prenom' => _request('prenom'),
84            'email' => _request('email'),
85            'message'=> _request('message'),
86            'champsup1'=>_request('champsup1'),
87            'champsup2'=>_request('champsup2'),
88            'sujet'=>_request('sujet'),
89            'checkbox'=>_request('checkbox'),
90            'anstispam'=>_request('Antispam'),
91        );
92
93        $nom_site = extraire_multi($GLOBALS['meta']["nom_site"]); 
94        $email_webmaster = $GLOBALS['meta']['email_webmaster'];
95        $email_to= lire_config('escal/config/destinataire').",".$email_webmaster;
96        $sujet = _T('escal:page_contact2')." ".$nom_site;
97        $email_from = $champs['email'];
98
99
100        $message =  "<strong>"._T('escal:envoi_mail_nom')."</strong>".$champs['nom']."\n\n";
101        $message .= "<strong>"._T('escal:envoi_mail_prenom')."</strong>".$champs['prenom']."\n\n";
102
103
104        if (lire_config('escal/config/champsup1') == 'oui') {
105            $message .= "<strong>"._T_ou_typo(lire_config('escal/config/titrechampsup1'))."&nbsp"."</strong>";
106            $message .= $champs['champsup1']."\n\n";
107        }
108
109        if (lire_config('escal/config/champsup2') == 'oui') {
110            $message.= "<strong>"._T_ou_typo(lire_config('escal/config/titrechampsup2'))."&nbsp"."</strong>";
111            $message.= $champs['champsup2']."\n\n";
112        }
113
114        if (lire_config('escal/config/radio') == 'oui') {
115            $message.= "<strong>"._T('escal:envoi_mail_motif')."</strong>";
116            $message.= $champs['sujet']."\n\n";
117        }
118
119        if (lire_config('escal/config/checkbox') == 'oui') {
120            $message .= "<strong>"._T_ou_typo(lire_config('escal/config/titrecheckbox'))."</strong>" ;
121            if (is_array($champs['checkbox'])) {
122              $message .= implode(" - ",$champs['checkbox'])."\n\n";
123            }
124        }
125
126        $message .= "<strong>"._T('escal:envoi_mail_message')."</strong>"."\n ".$champs['message'];
127
128      $message_html='<html>
129            <head>
130              <title>'.$sujet.'</title>
131            </head>
132            <body>
133              <div style="width:500px; margin:auto">
134                <div style="padding:10px; font-size:20px; font-weight:bold; background-color:#82ADE2">
135                  '.$sujet.'
136                </div>
137                <div style="padding:10px; background-color:#DAE6F6">
138                  '.nl2br($message).'
139                </div>
140              </div>
141            </body></html>'; 
142
143    $envoyer_mail = charger_fonction('envoyer_mail','inc');
144
145    $corps= array(
146        'from'=>$email_from,
147        'texte'=>supprimer_tags($message),
148        'html'=> $message_html,
149           'headers'=> array(
150             "X-Originating-IP: ".$GLOBALS['ip']
151         ),
152    );
153
154        if ($champs['antispam']=='' ){
155            if($envoyer_mail($email_to,$sujet,$corps)){
156                return array(
157                    'editable' => false,
158                    'message_ok'=>_T('escal:contact_retour_commentaire')."\n"."<strong>". _request('email')."</strong>"
159                    );
160            }else{
161                return array(
162                'message_erreur'=>_T('pass_erreur_probleme_technique')
163                );
164            }
165        }else{
166            return array('message_erreur'=>'Pas de robots ici !!');
167        }
168
169
170}
171// Verification basique d'insertion de code pour la fonction verifier
172function nocode($text){
173    if(!preg_match("/[]%~#`$&|}{^[><]/",$text))
174        return trim($text);
175    else
176        return FALSE;
177}
178
179?>
Note: See TracBrowser for help on using the repository browser.