Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2012, 10h49   #1
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Par défaut Les opération OR ou bien ||

Bonjour.

Je me suis inspiré de ce tuto pour faire mon formulaire de contact :
http://a-pellegrini.developpez.com/tutoriels/php/mail/

Comment je peux faire pour que ce soit l'un ou l'autre :

$message ou bien $op_z?

Je veux permettre qu'on indique un $message et une option $op_z, ou seulement l'un ou l'autre.

J'ai essayé || aussi OR.

Si je sélectionne $op_z sans $message, ça passe. Mais pas l'inverse.
Les deux indiqué, ça passe aussi.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
			elseif (empty($civilite) 
						 || empty($nom) 
						 || empty($pre) 
						 || empty($expediteur) 
						 || empty($sujet)){
				$alert = 'Tous les champs doivent être renseignés';
			}
 
 
			elseif (empty($op_z)
						 OR empty($message)){
				$alert = 'Il faut indiquer une option ou/et un message';
			}
__________________
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 10h57   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 011
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 3 011
Points : 5 071
Points : 5 071
Code :
1
2
3
4
5
6
7
8
$ceci = empty($a) || empty($b);
// n'équivaut pas à
$cela = !empty($a) || !empty($b);
 
// et
$ceci = empty($a) || empty($b);
// n'est pas pareil que
$cela = empty($a) && empty($b);
Dans ton cas ce qui t'intéresse c'est de vérifier que deux variables ne sont pas nulles simultanément. C'est donc AND que tu dois utiliser (ou &&).

Note: Pour réccupérer "une valeur sinon une autre valeur" tu peux utiliser l'opérateur ternaire:
Code :
$a = (isset($b)) ? $b : 'valeur par défaut';
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 11h09   #3
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Une petite erreur que j'ai indiquée:

Il faut vraiment que ça soit :

$a ou $b : on peut choisir entre les deux.
$a et $b : ou alors, choisir les deux.

si je fais que $a, pas d'envoi.
si je fais que $b, pas d'envoi.
Si je fais les deux, y a envoi.
__________________
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 11h12   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 011
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 3 011
Points : 5 071
Points : 5 071
Code :
if (!empty($a) && !empty($b)) { echo "J'envoie du lourd !"; }
Comme mentionné plus haut...

Citation:
Dans ton cas ce qui t'intéresse c'est de vérifier que deux variables ne sont pas nulles simultanément. C'est donc AND que tu dois utiliser (ou &&).
Regarde les tables: http://fr.wikipedia.org/wiki/Alg%C3%..._%28logique%29
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 11h21   #5
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Allez pour corser le tout, tu peux aussi factoriser la négation :
Code :
if ( ! (empty($a) || empty($b))) { echo "J'envoie du lourd !"; }
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/01/2012, 11h46   #6
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Ça ne fait pas ce dont je veux.

Il faut en avoir au moins un des deux sélectionné.

Les empty de nom, pre, expéditeur et sujet, si j'en oubli un, ça refuse
le mail. ça c'est correcte.

Mais pour message et l'option, il faut en avoir au moins un.

C'est peut-etre les elseif.. je ne sais pas.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
			elseif (empty($civilite) 
						 || empty($nom) 
						 || empty($pre) 
						 || empty($expediteur) 
						 || empty($sujet)){
				$alert = 'Tous les champs doivent être renseignés';
			}
 
 
			elseif (empty($op_z)
						 OR empty($message)){
				$alert = 'Il faut indiquer une option ou/et un message';
			}
Citation:
Envoyé par rawsrc Voir le message
Allez pour corser le tout, tu peux aussi factoriser la négation :
Code :
if ( ! (empty($a) || empty($b))) { echo "J'envoie du lourd !"; }
__________________
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 12h06   #7
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Bonjour,

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
if (empty($civilite) 
						 || empty($nom) 
						 || empty($pre) 
						 || empty($expediteur) 
						 || empty($sujet)
|| ((empty($op_z) || empty($message))){
				$alert = 'Tous les champs doivent être renseignés';
			}
else
{
// Envoi
}
Ceci ne marche pas ?


EDIT : Je suppose que $op_z vient d'un radio ou d'un select... Montre nous comment tu récupéres les données, je pense que cela vient plutot d'ici.

Sinon un echo des deux variables comme ceci :

Code :
echo '$message = '.$message' et $op_z='.$op_z;
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 12h13   #8
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Non..

normalement, ça devrait marcher.

cette partie du code est dans le tuto

Si on omet un des ithem ça rejette tout.

Je me suis inspiré de ce tuto pour faire mon formulaire de contact :
http://a-pellegrini.developpez.com/tutoriels/php/mail/

Version du tuto :
Code :
1
2
3
4
5
6
7
 elseif (empty($civilite) 
           || empty($nom) 
           || empty($expediteur) 
           || empty($sujet) 
           || empty($message))
    {
      $alert = 'Tous les champs doivent être renseignés';
Si je mets pas $message par exemple.. le courriel est rejeté.
__________________
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 12h20   #9
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Tien, ceci fonctionne :

Code :
1
2
3
elseif ((($message == "") || ($op_z == "")) AND (($message == "") && ($op_z == ""))){
	$alert = 'Il faut indiquer une option ou/et un message';
}
__________________
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 12h23   #10
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Concrétement tu viens de dire :

Si le message ou l'option est vide, et si le message et l'option sont vide...

Je pense que cette partie te suffira :

Code :
($message == "") && ($op_z == "")
Code :
1
2
3
4
5
6
7
8
9
10
11
12
elseif (empty($civilite) 
						 || empty($nom) 
						 || empty($pre) 
						 || empty($expediteur) 
						 || empty($sujet)){
				$alert = 'Tous les champs doivent être renseignés';
			}
 
 
			elseif ($message == "" && $op_z == ""){
				$alert = 'Il faut indiquer une option ou/et un message';
			}
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 12h36   #11
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
J'ai testé, ça ne marche pas.

Par contre, ça oui :
Code :
1
2
3
 
elseif ((($message == "") || ($op_z == "")) AND (($message == "") && ($op_z == ""))){
				$alert = 'Il faut indiquer une option ou/et un message';
ça fait bizarres mais ça marche.

Mais, si ça pas d'allure, je préfère aller selon les vraies règles et de comprendre pourquoi.

ça vient à dire ceci je pense mais qui marche pas :
Code :
1
2
			elseif (empty($message) || empty($op_z))
         AND (empty($message) && empty($op_z)){
__________________
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 12h44   #12
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Ça aussi, ça marche.

Je pense que c'est l'équivalent de l'autre qui marche aussi.

Mais, je suis plutôt incertain des raisons.

Code :
1
2
3
elseif (((!$message) || (!$op_z)) AND ((!$message) && (!$op_z))){
				$alert = 'Il faut indiquer une option ou/et un message';				
			}
__________________
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 13h13   #13
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Tu peux réduire à ceci :
Code :
elseif ( ! (strlen($message) || strlen($op_z)))
C'est soit l'un ou l'autre soit les deux mais en aucun cas aucun
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 13h26   #14
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Oui, fonctionne bien.

Si je peux ajouter l'obligation de mettre un minimum de 20 caractères,
ça serait bien.

mais, ça pas l'air à marcher le minimum.

Citation:
Envoyé par rawsrc Voir le message
Tu peux réduire à ceci :
Code :
elseif ( ! (strlen($message) || strlen($op_z)))
C'est soit l'un ou l'autre soit les deux mais en aucun cas aucun
__________________
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 14h02   #15
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 011
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 3 011
Points : 5 071
Points : 5 071
Citation:
Envoyé par rawsrc Voir le message
Tu peux réduire à ceci :
Code :
elseif ( ! (strlen($message) || strlen($op_z)))
C'est soit l'un ou l'autre soit les deux mais en aucun cas aucun
Ce qui revient exactement à
Code :
elseif ( ! (empty($message) || empty($op_z)) )
la sécurité sur l'inexistance des variables $messages et $op_z en plus. C'est dingue comme on tourne en rond avec ce thread

Au passage, quand tu veux l'un ou l'autre mais pas les deux ni aucun: c'est XOR qu'il faut utiliser:
Code :
1
2
3
4
5
6
$a = true;
$b = false;
 
var_dump( $a xor $b ); // true
var_dump( $a and $b ); // false
var_dump( $a or  $b ); // true
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 14h02   #16
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
En gardant le tout facilement lisible :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
$lenMsg = strlen($message);
$lenOpz = strlen($op_z);
 
if ( ! ($lenMsg || $lenOpz)) {
   $alert = ($lenMsg && ($lenMsg < 20)) 
               ? 'Message trop court'
               : 'Il faut indiquer une option ou/et un message';
}
 
?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 14h07   #17
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par Benjamin Delespierre Voir le message
Ce qui revient exactement à
Code :
elseif ( ! (empty($message) || empty($op_z)) )
la sécurité sur l'inexistance des variables $messages et $op_z en plus. C'est dingue comme on tourne en rond avec ce thread
Pas tout à fait, le empty() renvoie true pour ces valeurs '0' '0.0', j'ai déjà eu maille à partir avec ce genre de test surtout quand c'est bien noyé au fond d'un code long à n'en plus finir.

Et puis vu qu'il souhaite compter le nombre de caractères, strlen() est tout à fait approprié
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 14h18   #18
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 011
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 3 011
Points : 5 071
Points : 5 071
Dans ce cas il faut utiliser isset + l'opérateur de comparaison stricte. Ce qui nous donne:
Code :
elseif ( ! (isset($message) &&  isset($op_z) && $message !== "" && $op_z !== "") )
Je tiens à insister sur le fait que vérifier des valeurs sans vérifier l'existence des variables qui les portent résulte souvent en un E_WARNING (undefined variable).
isset ou empty sont donc de rigueur et leur usage doit être systématique.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 14h34   #19
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Je suis bien d'accord avec toi mais là on utilise dejà des variables qui normalement ont été initialisées à partir d'un tabeau global ($_POST, $_GET...) donc j'ose espérer que lors de leur initialisation les tests d'existence ont bien été faits : isset($_POST['message']).
Il est raisonnable de penser que des variables comme $message | $op_z sont bien initialisées et le test isset($message) n'est pas trop utile là dans son cas.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 19h32   #20
Membre du Club
 
Inscription : janvier 2010
Messages : 317
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 317
Points : 62
Points : 62
Merci pour les efforts que vous accordez.

Je poste le code complet de la partie contact.

Vous avez juste à mettre votre courriel et définir les trois variable du début
et vous allez pouvoir faire les tests.

Vous aller voir le contexte :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
<?php 
session_start();
 
$homepage  = 'http://localhost/email/';
$yourmail  = '@mail.com';
$theform   = 'http://localhost/wmail/email.php';
 
$prefixe = 'Je désire :';
 
$vop_a = htmlto("item 1");
$vop_b = htmlto("item 2");
$vop_c = htmlto("item 3");
$vop_d = htmlto("item 4");
$vop_e = htmlto("item 5");
$vop_f = htmlto("item 6");
$vop_g = htmlto("item 7");
$vop_h = htmlto("item 8");
$vop_i = htmlto("item 9");
$vop_j = htmlto("item 10");
 
$titlesubject = 'Provenance de mon site';
 
//passe le test security compass:
function htmlto($str){
  $str = trim($str);
  $str = stripslashes($str);
  $str = htmlspecialchars($str,ENT_QUOTES);
  $str = str_replace("<",NULL,$str);
  $str = str_replace(">",NULL,$str);
  $str = str_replace("=",NULL,$str);
  $str = str_replace("\\",NULL,$str);
  $str = str_replace("/",NULL,$str);
  $str = str_replace(";",NULL,$str);
  return $str ;
  }
 
//defini le captcha couleur
$couleur = array("yellow","green","blue","red","gray","pink","black");
	$color = $couleur[rand(0,5)];
	if($color == "yellow") $code = "jaune";
	if($color == "green")  $code = "vert";
	if($color == "blue")   $code = "bleu";
	if($color == "red")    $code = "rouge";
	if($color == "gray")   $code = "gris";
	if($color == "pink")   $code = "rose";
	if($color == "black")  $code = "noir";
  $captcha = '<div style="width:20px;"><div style="float:right;width:20px;height:20px;background-color:'.$color.'"></div></div>';
 
if (isset($_POST['envoye'])){
 
  $civilite		= ucfirst(htmlto($_POST['civilite']));
  $nom		    = ucfirst(htmlto($_POST['nom']));
  $pre		    = ucfirst(htmlto($_POST['pre']));
  $expediteur	= htmlto($_POST['email']);
  $sujet		  = htmlto($_POST['sujet']);
  $message		= htmlto($_POST['message']);
  //defini les options
  $op_z  = (isset($_POST['op_a'])) ? htmlto($_POST['op_a'])."\r\n" : null;
  $op_z .= (isset($_POST['op_b'])) ? htmlto($_POST['op_b'])."\r\n" : null;
  $op_z .= (isset($_POST['op_c'])) ? htmlto($_POST['op_c'])."\r\n" : null;
  $op_z .= (isset($_POST['op_d'])) ? htmlto($_POST['op_d'])."\r\n" : null;
  $op_z .= (isset($_POST['op_e'])) ? htmlto($_POST['op_e'])."\r\n" : null;
  $op_z .= (isset($_POST['op_f'])) ? htmlto($_POST['op_f'])."\r\n" : null;
  $op_z .= (isset($_POST['op_g'])) ? htmlto($_POST['op_g'])."\r\n" : null;
  $op_z .= (isset($_POST['op_h'])) ? htmlto($_POST['op_h'])."\r\n" : null;
  $op_z .= (isset($_POST['op_i'])) ? htmlto($_POST['op_i'])."\r\n" : null;
  $op_z .= (isset($_POST['op_j'])) ? htmlto($_POST['op_j'])."\r\n" : null;
 
  if(isset($_POST['token'], $_SESSION['token'])){
  if($_POST['token'] == $_SESSION['token']){
 
		if(isset($_POST['color'], $_SESSION['color'])){
		if($_POST['color'] == $_SESSION['color']){
		echo '<p style="color:red">Captcha OK</p>'; 
 
			$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
 
			$regex_head = '/[\n\r]/';
 
			if($_SERVER['HTTP_REFERER'] != $theform ){
				header($homepage);
			}
			elseif (empty($civilite) 
						 || empty($nom) 
						 || empty($pre) 
						 || empty($expediteur) 
						 || empty($sujet)){
				$alert = 'Tous les champs doivent être renseignés';
			}
 
			//ceci qui fait sujet du poste:
			$lenMsg = strlen($message);
			$lenOpz = strlen($op_z);
 
			if ( ! ($lenMsg || $lenOpz)) {
				 $alert = ($lenMsg && ($lenMsg < 20)) 
										 ? 'Message trop court'
										 : 'Il faut indiquer une option ou/et un message';
			}
 
			elseif (!preg_match($regex_mail, $expediteur)){
				$alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
			}
			elseif (preg_match($regex_head, $expediteur) 
							|| preg_match($regex_head, $nom) 
							|| preg_match($regex_head, $pre) 
							|| preg_match($regex_head, $sujet)){
					$alert = 'En-têtes interdites dans les champs du formulaire';
			}
			elseif (!isset($_COOKIE['sent'])){
					$to = $yourmail;
 
					$msg  = 'Bonjour,'."\r\n\r\n";
					$msg .= 'Ce mail a été envoyé depuis '.$_SERVER['HTTP_HOST'].' par '.$civilite.'. '.$pre.' '.$nom."\r\n\r\n";
					$msg .= 'Voici le message qui vous est adressé :'."\r\n";
					$msg .= '******************************************************'."\r\n";
					$msg .= $prefixe."\r\n";
					$msg .= $op_z."\r\n";
					$msg .= 'Message :'."\r\n";
					$msg .= $message."\r\n";
					$msg .= '******************************************************'."\r\n";
 
					// permettre les apostrophes
					$nom   = preg_replace("/(')/",chr(39),"$nom");
					$pre   = preg_replace("/(')/",chr(39),"$pre");
					$sujet = preg_replace("/(')/",chr(39),"$sujet");
					$msg   = preg_replace("/(')/",chr(39),"$msg");
 
					$headers = 'From: '.$pre.' '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
 
									if (mail($to, $sujet, $msg, $headers)){
											$alert = 'E-mail envoyé avec succès';
 
											unset($_POST);
 
									} //mail
									else{ $alert = 'Erreur d\'envoi de l\'e-mail'; }
 
			}else{ unset($_POST); } //cookieisset
 
		}else{ echo '<p style="color:red">Captcha non OK</p>'; } //color
		} //colorisset
 
	} //token
	} //tokenisset
 
} //envoyéisset
if (!empty($alert)){ 
  echo '<p style="color:red">'.$alert.'</p>'; 
}
 
unset($_SESSION['color']);
$_SESSION['color'] = $code;
 
unset($_SESSION['token']);
$token = md5(uniqid(rand(), true));
$_SESSION['token'] = $token;
?>
 
					<form action="<?php echo $theform; ?>" method="POST">
							<fieldset>
							<legend><strong>Nous contacter</strong></legend><p>
 
                  <table border="0">
                  <tr>
									<td colspan="4">
											<label for="civilite">Civilité :</label>
											<select id="civilite" name="civilite">
													<option value="mr" <?php if (!isset($_POST['civilite']) || $_POST['civilite'] == 'mr'){ echo ' selected="selected"'; } ?>>Monsieur</option>
													<option value="mme" <?php if (isset($_POST['civilite']) && $_POST['civilite'] == 'mme'){ echo ' selected="selected"'; } ?>>Madame</option>
													<option value="mlle" <?php if (isset($_POST['civilite']) && $_POST['civilite'] == 'mlle'){ echo ' selected="selected"'; } ?>>Mademoiselle</option>
											</select>
									</td>
									</tr>
									<tr>
									<td colspan="4">
											<label for="nom">NOM :</label>
											<input class="form" type="text" id="nom" name="nom" value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>" size="33"  />
									</td>
									</tr>
									<tr>
									<td colspan="4">
											<label for="nom">Prénom :</label>
											<input class="form" type="text" id="pre" name="pre" value="<?php echo (isset($_POST['pre'])) ? $pre : '' ?>" size="33"  />
									</td>
									</tr>
									<tr>
									<td colspan="4">
											<label for="email">Courriel :</label>
											<input class="form" type="email" id="email" name="email" value="<?php echo (isset($_POST['email'])) ? $expediteur : '' ?>" size="33"  />
									</td>
									</tr>
									<tr>
									<td colspan="4">
											<label for="sujet">Sujet :</label>
											<input class="form" type="text" id="sujet" name="sujet" value="<?php echo (isset($_POST['sujet'])) ? $sujet : $titlesubject; ?>" size="33"  readonly />
									</td>
									</tr>
									<tr>
									<td colspan="4"><?php echo $prefixe.'<br><br>'; ?>
                    <div class="opz">
											<input type="checkbox" name="op_a" id="op_a" value="<?php echo $vop_a; ?>" /> <label for="op_a"><?php echo $vop_a; ?></label><br><br>
											<input type="checkbox" name="op_b" id="op_b" value="<?php echo $vop_b; ?>" /> <label for="op_b"><?php echo $vop_b; ?></label><br>
											<input type="checkbox" name="op_c" id="op_c" value="<?php echo $vop_c; ?>" /> <label for="op_c"><?php echo $vop_c; ?></label><br>
											<input type="checkbox" name="op_d" id="op_d" value="<?php echo $vop_d; ?>" /> <label for="op_d"><?php echo $vop_d; ?></label><br>
											<input type="checkbox" name="op_e" id="op_e" value="<?php echo $vop_e; ?>" /> <label for="op_e"><?php echo $vop_e; ?></label><br><br>
											<input type="checkbox" name="op_f" id="op_f" value="<?php echo $vop_f; ?>" /> <label for="op_f"><?php echo $vop_f; ?></label><br>
											<input type="checkbox" name="op_g" id="op_g" value="<?php echo $vop_g; ?>" /> <label for="op_g"><?php echo $vop_g; ?></label><br>
											<input type="checkbox" name="op_h" id="op_h" value="<?php echo $vop_h; ?>" /> <label for="op_h"><?php echo $vop_h; ?></label><br>
											<input type="checkbox" name="op_i" id="op_i" value="<?php echo $vop_i; ?>" /> <label for="op_i"><?php echo $vop_i; ?></label><br><br>
											<input type="checkbox" name="op_j" id="op_j" value="<?php echo $vop_j; ?>" /> <label for="op_j"><?php echo $vop_j; ?></label><br>
                    </div>
									</td>
									</tr>
									<tr>
									<td colspan="4">
											<label for="textarea_1">Le message</label><br>
											<textarea class="form" id="textarea_1" name="message" cols="55" rows="4"><?php echo (isset($_POST['message'])) ? $message : '' ?></textarea>
											Il vous reste <span id="carac_reste_textarea_1"></span> caractères.
											<script type="text/javascript">
                      <!--
                         maxlength_textarea('textarea_1','carac_reste_textarea_1',250);
                      -->
											</script>
									</td>
									</tr>
									<tr>
									<td width="30%" align="center">
											<input type="hidden" name="token" value="<?php echo $token; ?>" />
											<input style="width:66px" type="submit" name="envoye" value="Envoyer" />
											<input style="width:66px" type="reset" name="annuler" value="Annuler" />
									</td>
									<td width="36%" align="center">
                          Quelle est cette couleur?
									</td>
									<td width="5%" align="center">
													<?php	 echo $captcha; ?>								
									</td>
									<td width="15%" align="center">
											<input class="form" style="width:75px" type="text" id="color" name="color" value="" size="10" />
									</td>
									</tr>
									</table>
 
							</fieldset>
					</form>
Images attachées
Type de fichier : jpeg localhost - 2012-01-23 - 13h-32m-14s.jpeg (64,5 Ko, 1 affichages)
__________________
dancom5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h46.


 
 
 
 
Partenaires

Hébergement Web