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

Langage PHP Discussion :

Mettre formulaire en session et site en includes et plusieurs formulaires [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2009
    Messages : 69
    Points : 39
    Points
    39
    Par défaut Mettre formulaire en session et site en includes et plusieurs formulaires
    Bonjours à tous,

    Je vous remercie pour les informations que vous pourrez m'apportez.

    Mon site s'articule avec des includes sur la page index.php, et ensuite parmi ces pages il y en a une qui est contact.php.

    Contact.php as une liste déroulante proposant d'aller sur 1 des 4 formulaires.

    Chaque formulaire contient au-delà du nom, prénom, mail des champs différent, et il y en a pas mal pour chaque formulaire.

    Et pour finir chaque formulaire, a son propre fichier php de traitement.

    Donc jusque ici tous marche bien.

    Mais voici le changement que je veut faire et pour lequel je n'ai pas réussi a trouvé toutes les réponses :

    Comme j'ai un captcha il peut arrivé que l'on se trompe, dans ce cas lors de la validation, un message indique une erreur donc on fait précédent mais le problème est que du coup le visiteur va devoir tous re-remplir.

    Et sa c'est pas cool pour lui car beaucoup de champs et un textearea.

    Donc j'ai compris que je devais faire des Session pour y stocker mon formulaire, mais comme je suis avec des include je dois vous avouer que je débute et là je n'arrive pas a comprendre sur quel page je dois mettre mes variable de session?

    Et je me demandais y a t-il pas une solution pour pouvoir stocker le formulaire en une fois, car quand il y a beaucoup de champs et là en plus 4 formulaires, sa va faire un sacré pâté, quelle est la direction que je dois prendre?

    Ne sachant pas quel code vous serai utile je n'en mets pas mais demandé moi je vous mettrai celui qui vous parait utile.

    Mais de plus je cherche pas de code je voudrais savoir les piste sur lequel travaillé en fait, et sortir de ma confusion.

    Dois-je mettre mes variable de session en haut du formulaire.php, où en haut du traitement.php, ou en haut de index.php?

    Car c'est surtout si je dois mettre en haut de index.php que sa me perturbe car j'ai donc 4 formulaire et certains champs on le même nom et sa fais un paquet de champs.

    Merci beaucoup pour les conseils que vous pourrez m'apportez et les pistes de travaille.

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Salut,

    Utiliser les sessions pour remplir les champs d'un form, c'est moyen

    C'est à toi de remplir et renvoyer le formulaire en fonction de ce qu'à renseigné l'utilisateur.

    En ce qui concerne les données perdues après un précédent, c'est que les entêtes (header) de ta page le spécifie sans doute.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2009
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    Non c'est pas pour remplir le formulaire, c'est juste sauvegarder ce que met l'utilisateur pour si l'envoi bug ou si le captcha est pas bon qu'il puisse retrouver ce qui est bon.

    Car sinon il doit tous refaire et si c'est juste le captcha qui est faux, il doit tous réécrir.

    De plus les textearea excepté pour un formulaire, vont contenir de longue description donc si sur un problème il doit tous refaire c'est un peu moyen.

    En fait il y a une première vérification des champs en javascript sur le formulaire donc si il oubli un champs pas de soucis il est toujours sur le formulaire.

    Mais quand il appuie sur valider le formulaire est traité par le script PHP de traitement mis en action.

    Et a se moment il y a vérification du captcha donc si il y a un problème captcha ou d'envoi du mail, quand il retourne sur le formulaire je voudrais qu'ils puisse retrouvé se qu'il a mis pour ré-ecrire le captcha et/ou retenté l'envoi.

    Et ainsi évité qu'il ré-écrive tous.

    Donc qu'elle sont les piste a exploité .

    Utiliser les sessions pour remplir les champs d'un form, c'est moyen

    C'est à toi de remplir et renvoyer le formulaire en fonction de ce qu'à renseigné l'utilisateur.

    En ce qui concerne les données perdues après un précédent, c'est que les entêtes (header) de ta page le spécifie sans doute.
    Xumil, je crois comprendre ce que tu veux dire, mais je n'ai pas un site avec des connexion utilisateur ou autre, c'est juste des formulaire de contact pour des service en tant que professionnelle de la musique que je propose.
    Donc je veux simplement apporter a mon site un confort minimum a mes futur client.

    Mais le problème est comme je le disai, que par rapport a la manière dont j'ai articulé mon site(les include dans index.php) qui me perturbe quand au placement des déclaration de variable de session.

    De plus savoir si il existe une méthode pour stocker le formulaire(les champs rempli) en une fois.

    Merci de votre aide.

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    C'est bien ce que je te disais, si tous les champs ne sont pas corrects, c'est à toi de réafficher le formulaire en complétant les champs correct et en signalant ceux ne l'étant pas.

    D'où l'intérêt de faire le contrôle sur la même page (action)

    Pour ma part seuls les formulaires en get peuvent renvoyer vers une autre page.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2009
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    En fait j'ai grace au javascript une vérification des champs sur la même page que le formulaire. donc pour les champs c'est OK on bouge pas d'un poil.

    Donc c'est surtout pour un problème lié au captcha et a l'envoi de mail et inscrption dans la BDD. Qui se font quand on valide, sa part sur envoi_leformulaire.php

    Mais là pour resté dans ma configuration où dois-je mettre mes variable de session je veux dire sur quelle page, le formulaire, le traitement(page actio) ou l'index .

    Donc malgré tous je dois bien pouvoir du coup mettre mon formulaire en session?

    Peut le faire pour tous en une fois?
    Y a t-il une synthax qui le permette

    Mais je vois se que tu veut dire, mais là je voudrais gardé la configuration actuelle et juste ajouté ces sessions.

    Pour ma part seuls les formulaires en get peuvent renvoyer vers une autre page.
    Histoire d'apprendre quelque chose dans quelle cas utise tu un formulaire en GET et l'autre en POST bien que je comprenne que l'un passe par l'URL et l'autre non.

    Mais là je tien a garder la configuration actuelle et ajouté les session.
    Je cherche juste les piste de travail.

    Merci beaucoup de votre aide.

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Je ne comprend pas ton « tout en une fois ».

    Ton formulaire, tu dois le contrôler, et stocker au fur et à mesure dans des variables de sessions (en restant dans cet optique), les saisies correctes.

    Si tout est correct tu delete tes variables, sinon, tu renvoies vers le formulaire, en testant dans cette page si tes variables existent.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2009
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    Le tout en une fois, je veux dire par exemple en langage humain:

    tout ce qui est en Post garde -le en session dans $ma_variable.


    Ensuite toujours en langage humain je demande de remplir le formulaire pour l'utilisateur qui dois refaire le captcha:

    Remet les donné POST de $ma_variable dans le formulaire


    J'ai cru voir un truc du genre dans un tutos pour évité les renvoi de formulaire lors d'un rafraichissement.

    Je te join :

    formulaire.php (le plus petit des 4)
    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
     
    <!--Javascript pour la verification des saisie dans le formulaire-->
    <!--////début du script JAVA-->
    <script type="text/javascript" language="Javascript" >
    <!--
    function verification()
    {
    	if(document.formulaire_informations.Nom.value == "") { //vérification du champs NOM
      alert("Veuillez entrer votre Nom svp");
      document.formulaire_informations.Nom.focus();
      return false;
     }
      else
     if(document.formulaire_informations.Prenom.value == "") { //vérification du champs PRENOM
       alert("Veuillez entrer votre Prenom svp");
       document.formulaire_informations.Prenom.focus();
       return false;
    }
        else
     if(document.formulaire_informations.Nom_du_groupe_ou_nom_d_artiste.value == "") { //vérification du champs NOM DU GROUPE
       alert("Veuillez entrer votre Nom de Groupe ou nom d'artiste svp");
       document.formulaire_informations.Nom_du_groupe_ou_nom_d_artiste.focus();
       return false;
    }
      else
     if(document.formulaire_informations.eMail.value.indexOf('@') == -1) { //vérification du champs eMAIL
       alert("Ce n'est pas une adresse mail, verifiez la svp");
       document.formulaire_informations.eMail.focus();
       return false;
     }
        else
       if(document.formulaire_informations.Message.value == "") { //vérification du champs MESSAGE
       alert("Veuillez entrer le texte de votre message svp");
       document.formulaire_informations.Message.focus();
       return false;
      }
    return true
    }
    //-->
    </script>
    <!--///fin du Script-->
    <!--Description du formulaire-->
      <h2 class="titre">Informations complementaires</h2>
      <p>Ce formulaire vous permet de nous faire part de vos demandes d'informations complémentaire.<br />
      </p>
      <!--Fin description du formulaire-->
      <!--Début du formulaire-->
    <form class="formulaire" action="includes/envoi_infos.php" method="post" name="formulaire_informations">
      <!--//Champs pour les informations personnels-->
      <fieldset>
        <legend>Informations</legend>
        <table width="540" height="176" border="0">
          <tr>
            <td width="218"><label>Nom : </label></td>
            <td width="312"><input name="Nom" type="text" /></td>
          </tr>
          <tr>
            <td><label>Prenom :</label></td>
            <td><input name="Prenom" type="text" /></td>
          </tr>
          <tr>
            <td><label>Nom du groupe ou nom d'artiste :</label></td>
            <td><input name="Nom_du_groupe_ou_nom_d_artiste" type="text" /></td>
          </tr>
          <tr>
            <td><label>eMail :</label></td>
            <td><input name="Mail" type="text" /></td>
          </tr>
          <tr>
            <td height="68" colspan="2"><label>Message :<br />
                <textarea name="Message" cols="30" rows="10" wrap="virtual">&nbsp;</textarea>
              </label></td>
          </tr>
          <tr>
            <td height="68"><label for="captcha">
              <input name="vcaptcha" type="text"/>
            </label></td>
            <td height="68">Recopiez le mot :
              <script type="text/javascript">
    function captchaRefresh() {
         document.getElementById("captcha").src = 'includes/gene_captcha.inc.php?'+Math.floor(Math.random()*1000);
    }
              </script>
              <img src="includes/gene_captcha.inc.php" id="captcha" alt="captcha_informations" />
            <input type="button" onclick="captchaRefresh()" value="Actualiser" /></td>
          </tr>
        </table>
      </fieldset>
      <!--Bouton d'envoi et réinitialisé-->
      <input name="Reinitialise" type="reset" value="R&eacute;initialiser" />
      <input name="Envoie" type="submit" value="Envoyer" />
    </form>
    <!--Fin du formulaire-->
    Y a pas de balises car il vien s'inclure dans index.php lorsque que on l'appelle grace a la liste déroulante de contact.php.

    Voici le script de traitement:

    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
    <?php 
    //On démarre la session
    session_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>ITB.Audio/envoi</title>
    <link href="/itb.audio/style/stylemsgform.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <?php
    /////Vérification et Déclaration des variables
    if(isset($_POST['Nom']))
    $nom=$_POST['Nom']; 
    if(isset($_POST['Prenom']))
    $prenom=$_POST['Prenom']; 
    if(isset($_POST['Nom_du_groupe_ou_nom_d_artiste']))
    $artiste=$_POST['Nom_du_groupe_ou_nom_d_artiste'];
    if(isset($_POST['Mail']))
    $email=$_POST['Mail']; 
    if(isset($_POST['Message']))
    $message=nl2br(htmlentities($_POST['Message']));
    ///création du captcha avec les paramètre suivant.
    if (!empty($_POST['vcaptcha']))
    	{
    		if ($_POST['vcaptcha']!==($_SESSION['captcha-control'])) //Si la chaine saisie par lutilisateur ne correspond pas Ã* celle stocké en session...
    		{
    			echo 'Le captcha que vous avez saisi n\'est pas correct !';//message si la saisie est fause
    			exit;//le script ne continue pas
    		}
    			else//sinon c'est OK on continue la suite du script
    			{	
    /////Envoi du mail par compte mail avec PHPmailer
     
    //utilisation ici de la class PHPmailer pour l'envoi par mail.
    		}
    		else
    		{
    			echo("<center><br><br><br><h2 class='msgOK'>votre demande d\'informations &agrave; &eacute;t&eacute; envoyer</h2><br><br><br><br><a href=index.html>Cliquez ici pour revenir &agrave; l\'accueil</a></center>");
    		}
    			}
    	}
    ?>
    </body>
    </html>
    J'ai pas mis la class, mais donc j'ai en fait un session start();
    sur tous les formulaire et le fichier de traitement mais aussi sur index.php.

    Mais après je vois pas par où commencé pour faire ce que je veux faire?

    Merci beaucoup de votre aide.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2009
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    En fait se que je voudrais mettre en place, c'est remplir le formulaire avec les infos que le visiteur avais entré.

    Car oui pour le moment si le captcha par exemple est faux alors quand on revient au formulaire les infos apparaissent en proposition, mais je voudrai pouvoir les remplir directement.

    Et le plus important est le texearea qui contiendra une description du Projet.

    Je sais pas si j'ai réussi a mieux explication se dont j'ai besoin et que je ne vois pas par où commencé.

    Merci de votre aide.

  9. #9
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Xunil Voir le message
    Pour ma part seuls les formulaires en get peuvent renvoyer vers une autre page.
    Houla l'Ami, j'espéres que c'est ta phrase qui est mal tournée, si non les 50 sites que je géres il faut que jes les refassent

  10. #10
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par NuDub Voir le message
    En fait se que je voudrais mettre en place, c'est remplir le formulaire avec les infos que le visiteur avais entré.
    Bien sur il faut faire cela, alors voici la méthodologie exacte:

    1) en tête de TOUT tes PHP sauf les php destinés a étre include
    tu met un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?PHP
    session_start();
    2) dans la page qui reçoit le POST tu fais ceci
    (je ne prends que trois exemples)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(isset($_POST['Nom'])) $nom=$_POST['Nom']; 
    else $nom="";
    $_SESSION['nom']=$nom;
    if(isset($_POST['Prenom'])) $prenom=$_POST['Prenom']; 
    else $Prenom="";
    $_SESSION['Prenom']=$nom;
    if(isset($_POST['Message']))
    $message=nl2br(htmlentities($_POST['Message']));
    else $message="";
    $_SESSION['message']=$nom;
    J'attires ton attention que tel que tu récupéres le textarea il faut remettre les \n a la place des BR

    d'autre part le captcha est a mon avis mal placé ?

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2009
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    FoxLeRenard, bonjours et merci de ton aide.

    D'accord, donc du coup avec l'exemple que tu me donne dans mon code traitement_formulaire.php, je dois mettre ton exemple sous le session start(); que j'ai déjà.

    Mais dois-je garder les déclaration de variable qui suivent.

    J'attires ton attention que tel que tu récupéres le textarea il faut remettre les \n a la place des BR
    Tu veux dire que je me suis tromper, sinon le textearea est juste pour envoi d'un mail en HTML mais effectivement je trouve pas le bon truc pour le bon affichage dans le amil.

    d'autre part le captcha est a mon avis mal placé ?
    Je veux bien ton avis, placement a l'affichage ou dans le traitement_formulaire.php.

    Merci de ton aide.

  12. #12
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par NuDub Voir le message
    FoxLeRenard, bonjours et merci de ton aide.
    Mais dois-je garder les déclaration de variable qui suivent.
    Oui c'est la même chose pour tout garder, donc une valeur de session par POST !
    SAUF le captcha bien sur qui doit étre
    1) regénéré
    2) ressaisi !
    Bien sur
    Citation Envoyé par NuDub Voir le message
    Tu veux dire que je me suis tromper, sinon le textearea est juste pour envoi d'un mail en HTML mais effectivement je trouve pas le bon truc pour le bon affichage dans le amil.
    Oui, moi je ne ferais pas de nl2br !! en effet quand tu va réafficher
    la valeur mise en session tu aura des BR et non les retour ligne d'un textarea !
    d'autre par tu peux bien les stocker comme ça
    Par contre si envoie de mail c' est la que tu fais ton nl2br


    Citation Envoyé par NuDub Voir le message
    Je veux bien ton avis, placement a l'affichage ou dans le traitement_formulaire.php.
    Je mettrais le contrôle du captcha dans le style que je t'ais indiqué pour tout INPUT récupéré en POST,en premier
    Mais bon c'est pas important finalement !

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2009
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    Oui c'est la même chose pour tout garder, donc une valeur de session par POST !
    Je demandais en fais si je devais remplacé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    /////Vérification et Déclaration des variables
    if(isset($_POST['Nom']))
    $nom=$_POST['Nom']; 
    if(isset($_POST['Prenom']))
    $prenom=$_POST['Prenom']; 
    if(isset($_POST['Nom_du_groupe_ou_nom_d_artiste']))
    $artiste=$_POST['Nom_du_groupe_ou_nom_d_artiste'];
    if(isset($_POST['Mail']))
    $email=$_POST['Mail']; 
    if(isset($_POST['Message']))
    $message=nl2br(htmlentities($_POST['Message']));
    Par le code que tu m'as donné une fois bien adapté, ou si je devais mettre ton code réadapté sous session start(); et gardé ce que je viens de mettre ci-dessus en plus.
    Mais en relisant j'ai compris que oui je dois faire un remplacement, vu que ton code vérifie et met en session.
    Par contre tous ce code devra venir au dessus du Doctype et en dessous de session start(); .

    Oui, moi je ne ferais pas de nl2br !! en effet quand tu va ré-afficher
    la valeur mise en session tu aura des BR et non les retour ligne d'un textarea !
    d'autre par tu peux bien les stocker comme ça
    Par contre si envoie de mail c' est la que tu fais ton nl2br
    Je fais faire comme tu le propose car je pense que effectivement c'est mieux de ré-affiché tel quel puis dans la partie envoi de mail faire le nécessaire.


    Bon il me reste plus que a bien adapté tous ça a mes champs et pour chaque formulaire.

    En fait le doute principal était le placement de ce code car je me suis dis avec les includes si je dois mettre tous ça sur l'index.php, sa va être le bordel et avec plein de conflit du au 4 formulaires et aux champs parfois identique.

    Tu m'as bien éclairé je vais lundi mettre tous ça sur mes script de traitement_formulaire.php

    Merci beaucoup de l'aide que tu m'apporte.

  14. #14
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Houla l'Ami, j'espéres que c'est ta phrase qui est mal tournée, si non les 50 sites que je géres il faut que jes les refassent
    Oui, elle est peut-être mal tournée, ce que je voulais dire est que le contrôle de mes formulaires en post s'effectuent sur les mêmes pages des formulaires, par le biais d'un script d'une autre page, je n'ai pas besoin de mettre les variables en sessions ou autre moyen de mémorisation.

  15. #15
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Xunil Voir le message
    Oui, elle est peut-être mal tournée, ce que je voulais dire est que le contrôle de mes formulaires en post s'effectuent sur les mêmes pages des formulaires, par le biais d'un script d'une autre page, je n'ai pas besoin de mettre les variables en sessions ou autre moyen de mémorisation.
    Bien sur l'Ami, théoriquement, mais sais tu cette statistique

    90 % des particuliers ne changent pas leurs paramétres IE ou autre
    (de toute façon il ne savent pas)
    donc eux acceptent (valeur de base) javascript.

    dans les 10% restant 5% bloquent le javascript par "sécuritée"
    la plus de controle possible lors des submit


    Mais pire que ça ... cette autre stat
    70 % des gens qui se baladent sur la toile le font de leur bureau ...
    Et là, 45% des services informatique bloquent le javascript voir même les ActiveX ...

    Alors ton contôle Oui MAIS ....

  16. #16
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par NuDub Voir le message
    Je demandais en fais si je devais remplacé ça :
    mon code, Par le code que tu m'as donné une fois bien adapté,
    OUI absolument donc complété dans le même esprit par ce que je n'ais pas mis

    je devais mettre ton code réadapté sous session start();
    OUI

    gardé ce que je viens de mettre ci-dessus en plus.
    NON maiss tu l'as compris

    Par contre tous ce code devra venir au dessus du Doctype et en dessous de session start(); .
    Voila c'est ça


    Je vais faire comme tu le propose car je pense que effectivement c'est mieux de ré-affiché tel quel puis dans la partie envoi de mail faire le nécessaire.


    Bon il me reste plus que a bien adapté tous ça a mes champs et pour chaque formulaire.

    En fait le doute principal était le placement de ce code car je me suis dis avec les includes si je dois mettre tous ça sur l'index.php, sa va être le bordel et avec plein de conflit du au 4 formulaires et aux champs parfois identique.

    Tu m'as bien éclairé je vais lundi mettre tous ça sur mes script de traitement_formulaire.php

    Merci beaucoup de l'aide que tu m'apporte.
    n 'oublies pas cette régle toute bête évidente , que tu sais , mais bon je la redis .....

    L'include c'est comme s' il n'existait pas, et que l'on ait écris le PHP d'un seul tenant

    exemple truc.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?PHP
    if(isset($_POST['Nom'])) $nom=$_POST['Nom']; 
    else $nom="";
    session start();
    include "machin.php";
    ?>
    et machin.php JAMAIS de "session start();" dans un include
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?PHP
    $_SESSION['nom']=$nom;
    ?>
    c'est pareil que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?PHP
    session start();
    if(isset($_POST['Nom'])) $nom=$_POST['Nom']; 
    else $nom="";
    $_SESSION['nom']=$nom;
    ?>
    détail on rouvre et ferme PHP dans le include mais il est neutralisé au final

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2009
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    Fox le renard merci beaucoup pour ton aide, je repond tard car ces dernier jours j'ai eu beaucoup de travail et donc peu de temps pour bosser sur mon site.

    Donc là j'ai fais ce que tu m'as dis en adaptant a mon code et a ce que je devais mettre.

    Et par exemple pour testé, ce que j'ai fais c'est remplir le formulaire puis mettre un mauvais Captcha.
    Et je valide.

    Donc je tombe sur le message d'erreur prévus pour puis je fais précédent et là je retombe sur mon formulaire vide.

    Voici mon code réadapté(je ne met pas la parti mail qui est longue et pas utile.
    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
     
    <?php 
    //On démarre la session
    session_start();
    /////Vérification et Déclaration des variables
    if(isset($_POST['Nom'])) $nom=$_POST['Nom'];
    else $nom="";
    $_SESSION['nom']=$nom; 
    if(isset($_POST['Prenom'])) $prenom=$_POST['Prenom'];
    else $prenom="";
    $_SESSION['prenom']=$prenom;
    if(isset($_POST['Nom_du_groupe_ou_nom_d_artiste'])) $artiste=$_POST['Nom_du_groupe_ou_nom_d_artiste'];
    else $artiste="";
    $_SESSION['artiste']=$artiste;
    if(isset($_POST['Mail'])) $email=$_POST['Mail'];
    else $email="";
    $_SESSION['email']=$email;
    if(isset($_POST['Message'])) $message=(htmlentities($_POST['Message']));
    else $message="";
    $_SESSION['message']=$message;
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>ITB.Audio/envoi</title>
    <link href="/itb.audio/style/stylemsgform.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <?php
    ///création du captcha avec les paramètre suivant.
    if (!empty($_POST['vcaptcha']))
    	{
    		if ($_POST['vcaptcha']!==($_SESSION['captcha-control'])) //Si la chaine saisie par lutilisateur ne correspond pas Ã* celle stocké en session...
    		{
    			echo 'Le captcha que vous avez saisi n\'est pas correct !';//message si la saisie est fause
    			exit;//le script ne continue pas
    		}
    			else//sinon c'est OK on continue la suite du script
    			{	
    //---------------------PARTIE ENVOI DU MAIL-------------//
    	}
    ?>
    </body>
    </html>
    J'ai donc mon session_start() sur l'index.php où les pages sont incluses puis sur le fichier de traitement .php car lui n'est pas inclut.

    Donc ais-je bien compris et bien fais mon code(se qui semble être le cas), et sinon y a t-il une manip en plus pour que les données se remette dans les cases du formulaire.

    Car d'après nos propos j'avais cru comprendre que sa devais être le cas(cf. quand le message se ré afichera[...]il y auras des /n au lieu des retour a la ligne).

    De plus je crois que le :

    Bypass le javascript car là je peux valider le formulaire vide, bon il ne semble pas envoyé de mail mais il active la page traitement.php

    En fait d'ailleur je n'ai pas compris a quoi servai se else, serai t-il possible de m'expliqué sa fonction. Merci

    Merci beaucoup de votre aide.

  18. #18
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par NuDub Voir le message
    Fox le renard merci beaucoup pour ton aide,
    Parfait ça fait sept jours ... il me faut me replonger dedans, alors je réédites ici dans une heure environ et la on s'explique

    Tu verras que c'est pas trés compliqué en fait.

    La seule chose pour simplifier que je voudrais changer est cette histoire d'index.php en effet on dira que l'index.php c'est l'accueil de ton site
    cet accueil (index.php) propose quatre choix de saisies (ou 10 on s'en moque)

    En fonction de ce choix les gens vont aller sur formulaire4.php par exemple lequel une fois rempli, appelera son traitement ==> traitement4.php

    Je te copnseilles cette démarche si tu l'acceptes, car ensuite , maitrisant
    ce cas "4" les autres seront enfantin a faire,
    Et surtout ensuite tu verra qu'il est possible de mettre les 4 formulaires et les 4 traitement dans index.php !!!

    Mais la sagesse est avant tout la maitrise du principe OK

  19. #19
    FoxLeRenard
    Invité(e)
    Par défaut
    Premiere partie

    Je te demandes de changer le nom de ta session de captcha
    dans le PHP qui le fabrique, c'est trés important car le "-" est mal géré
    donc ce sera captcha_control

    Alors voici complet et testé formulaire4.php
    c' est donc venant d'un choix dans index.php
    le premier php qui gére le cas "4" de ta série de formulaires


    Tu vas comprendre, si on vient de l'index aucune valeur de saisie n'est dans les sessions donc tout est comme avant !!

    Par contre si on revient de traitement4 parceque le captcha est faux,
    toutes les sessions sont pleines y compris les retours chariot etc ...
    et rien n'est a ressaisir


    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
     
    <?PHP
    session_start();
    if (!isset($_SESSION['nom'])) {$_SESSION['nom']="";$nom="";}
         else {$nom=$_SESSION['nom'];}
    if (!isset($_SESSION['prenom'])) {$_SESSION['prenom']="";$prenom="";}
         else {$prenom=$_SESSION['prenom'];}
    if (!isset($_SESSION['artiste'])) {$_SESSION['artiste']="";$artiste="";}
         else {$artiste=$_SESSION['artiste'];}
    if (!isset($_SESSION['email'])) {$_SESSION['email']="";$email="";}
         else {$email=$_SESSION['email'];}
    if (!isset($_SESSION['message'])) {$_SESSION['message']="";$message="";}
         else {$message=$_SESSION['message'];}
     
     
    ?>
     
     
     
    <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'  'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
    <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
    body {
    background-color: #EFEFF1;
    }
    body,td,th {
    font-size: 14px;
    font-family: Georgia, Times New Roman, Times, serif;
    }
    div.cent {width: 900px;margin : auto;text-align:center;} 
    </style>
    </head>
    <body>
     
    <script type="text/javascript" language="Javascript" >
    <!--
    function verification()
    {
     if(document.formulaire_informations.Nom.value == "") { 
      alert("Veuillez entrer votre Nom svp");
      document.formulaire_informations.Nom.focus();
      return false;
     }
      else
     if(document.formulaire_informations.Prenom.value == "") { 
       alert("Veuillez entrer votre Prenom svp");
       document.formulaire_informations.Prenom.focus();
       return false;
    }
        else
     if(document.formulaire_informations.Nom_du_groupe_ou_nom_d_artiste.value == "") { 
       alert("Veuillez entrer votre Nom de Groupe ou nom d'artiste svp");
       document.formulaire_informations.Nom_du_groupe_ou_nom_d_artiste.focus();
       return false;
    }
      else
     if(document.formulaire_informations.eMail.value.indexOf('@') == -1) { 
       alert("Ce n'est pas une adresse mail, verifiez la svp");
       document.formulaire_informations.eMail.focus();
       return false;
     }
        else
       if(document.formulaire_informations.Message.value == "") { 
       alert("Veuillez entrer le texte de votre message svp");
       document.formulaire_informations.Message.focus();
       return false;
      }
    return true
    }
    //-->
    </script>
      <h2 class="titre">Informations complementaires</h2>
      <p>Ce formulaire vous permet de nous faire part de vos demandes d'informations complémentaire.<br />
      </p>
    <form class="formulaire" action="traitement4.php" method="post" name="formulaire_informations">
      <fieldset>
        <legend>Informations</legend>
        <table width="540" height="176" border="0">
          <tr>
            <td width="218"><label>Nom : </label></td>
     
    <?PHP     echo("<td width='312'><input name='Nom' type='text' value='".$nom."' /></td>"); ?>
     
          </tr>
          <tr>
            <td><label>Prenom :</label></td>
     
    <?PHP     echo("<td><input name='Prenom' type='text' value='".$prenom."' /></td>"); ?>
     
          </tr>
          <tr>
            <td><label>Nom du groupe ou nom d'artiste :</label></td>
    <?PHP     echo("<td><input name='Nom_du_groupe_ou_nom_d_artiste' type='text' value='".$artiste."' /></td>"); ?>
          </tr>
          <tr>
            <td><label>eMail :</label></td>
     
    <?PHP     echo("<td><input name='Mail' type='text' value='".$email."' /></td>"); ?>
     
          </tr>
          <tr>
            <td height="68" colspan="2"><label>Message :<br />
    <?PHP     echo("<textarea name='Message' cols='30' rows='10' wrap='virtual'>".$message."</textarea>"); ?>
              </label></td>
          </tr>
          <tr>
            <td height="68"><label for="captcha">
              <input name="vcaptcha" type="text"/>
            </label></td>
            <td height="68">Recopiez le mot :
              <script type="text/javascript">
    function captchaRefresh() {
         document.getElementById("captcha").src = 'includes/gene_captcha.inc.php?'+Math.floor(Math.random()*1000);
    }
              </script>
              <img src="includes/gene_captcha.inc.php" id="captcha" alt="captcha_informations" />
            <input type="button" onclick="captchaRefresh()" value="Actualiser" /></td>
          </tr>
        </table>
      </fieldset>
      <input name="Reinitialise" type="reset" value="R&eacute;initialiser" />
      <input name="Envoie" type="submit" value="Envoyer" />
    </form>
     
     
    </body>
    </html>

  20. #20
    FoxLeRenard
    Invité(e)
    Par défaut
    Et maintenant traitement4.php

    Il y aura des petits détails de gestions d'erreurs, mais fait attention tu n'affiches pas de echo si il y a encore des header a lancer !!


    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
     
    <?php 
    session_start();
    if(isset($_POST['vcaptcha'])) $vcaptcha=$_POST['vcaptcha'];
    else $vcaptcha="";
    if (!isset($_SESSION['captcha_control'])) {$_SESSION['captcha_control']=1;$captcha_control=1;}
         else {$captcha_control=$_SESSION['captcha_control'];}
     
    if($vcaptcha!="")
     {
     if(isset($_POST['Nom'])) $nom=$_POST['Nom'];
     else $nom="";
     $_SESSION['nom']=$nom; 
     if(isset($_POST['Prenom'])) $prenom=$_POST['Prenom'];
     else $prenom="";
     $_SESSION['prenom']=$prenom;
     if(isset($_POST['Nom_du_groupe_ou_nom_d_artiste'])) $artiste=$_POST['Nom_du_groupe_ou_nom_d_artiste'];
     else $artiste="";
     $_SESSION['artiste']=$artiste;
     if(isset($_POST['Mail'])) $email=$_POST['Mail'];
     else $email="";
     $_SESSION['email']=$email;
     if(isset($_POST['Message'])) $message=(htmlentities($_POST['Message']));
     else $message="";
     $_SESSION['message']=$message;
     }
     else { header('Location: formulaire4.php');exit;}
     
      if ($vcaptcha!=$captcha_control)
    		{
       //echo 'Le captcha que vous avez saisi n\'est pas correct !';
       header('Location: formulaire4.php');
       exit;
    		}
    			else//sinon c'est OK on continue la suite du script
    			{	
    //---------------------PARTIE ENVOI DU MAIL-------------//
       }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>ITB.Audio/envoi</title>
    <link href="/itb.audio/style/stylemsgform.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
     
    </body>
    </html>

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

Discussions similaires

  1. [Club Internet] comment mettre un .htaccess sur mon site ?
    Par cyberdevelopment dans le forum Autres hébergeurs
    Réponses: 8
    Dernier message: 27/07/2006, 17h49
  2. Persistance de formulaire sans session
    Par supermanu dans le forum Struts 1
    Réponses: 1
    Dernier message: 19/07/2006, 14h30
  3. Réponses: 6
    Dernier message: 31/01/2006, 16h55
  4. Réponses: 4
    Dernier message: 01/10/2005, 17h59
  5. [struts] Destruction bean formulaire de session
    Par k4eve dans le forum Struts 1
    Réponses: 4
    Dernier message: 06/05/2004, 17h34

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