IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Les opération OR ou bien || [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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';
    			}

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $a = (isset($b)) ? $b : 'valeur par défaut';

  3. #3
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    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.

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!empty($a) && !empty($b)) { echo "J'envoie du lourd !"; }
    Comme mentionné plus haut...

    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

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Allez pour corser le tout, tu peux aussi factoriser la négation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( ! (empty($a) || empty($b))) { echo "J'envoie du lourd !"; }

  6. #6
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Ç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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( ! (empty($a) || empty($b))) { echo "J'envoie du lourd !"; }

  7. #7
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '$message = '.$message' et $op_z='.$op_z;

  8. #8
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é.

  9. #9
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Tien, ceci fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elseif ((($message == "") || ($op_z == "")) AND (($message == "") && ($op_z == ""))){
    	$alert = 'Il faut indiquer une option ou/et un message';
    }

  10. #10
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    ($message == "") && ($op_z == "")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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';
    			}

  11. #11
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    J'ai testé, ça ne marche pas.

    Par contre, ça oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			elseif (empty($message) || empty($op_z))
             AND (empty($message) && empty($op_z)){

  12. #12
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Ç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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    elseif (((!$message) || (!$op_z)) AND ((!$message) && (!$op_z))){
    				$alert = 'Il faut indiquer une option ou/et un message';				
    			}

  13. #13
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Tu peux réduire à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif ( ! (strlen($message) || strlen($op_z)))
    C'est soit l'un ou l'autre soit les deux mais en aucun cas aucun

  14. #14
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif ( ! (strlen($message) || strlen($op_z)))
    C'est soit l'un ou l'autre soit les deux mais en aucun cas aucun

  15. #15
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Tu peux réduire à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  16. #16
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    En gardant le tout facilement lisible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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';
    }
     
    ?>

  17. #17
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Ce qui revient exactement à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é

  18. #18
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Dans ce cas il faut utiliser isset + l'opérateur de comparaison stricte. Ce qui nous donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  19. #19
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    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.

  20. #20
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. compter les opérations
    Par killthom dans le forum MATLAB
    Réponses: 1
    Dernier message: 20/06/2007, 13h42
  2. Vérifier que les Threads se ferment bien
    Par oc_alex86 dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 13/05/2007, 20h46
  3. les opérations [urgent stp]
    Par amazircool dans le forum Access
    Réponses: 1
    Dernier message: 14/12/2006, 22h41
  4. Forcer la journalisation à finir les opérations en attente
    Par Lorponos dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 27/04/2006, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo