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 :

Formulaire PHP - Recuperation de valeur


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Formulaire PHP - Recuperation de valeur
    Bonjour,
    Voilà, j'ai donc un formulaire PHP classique avec un champ qui ce remplit lorsque deux autres sont complétés. Cependant je n'arrive pas à récuperer par la suite la valeur qui est donc définie dans ce dernier.

    J'aimerais recupérer la valeur de dn, et ici htmlspecialchars($_POST["dn"]) ne me donne rien..
    Auriez-vous une idée de comment réaliser ceci ?

    Cordialement

    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
    <html>
    <head>
    <script type="text/javascript">
    function remplir()
    {
    document.getElementById('dn').value = ( (document.getElementById('prenom').value).toLowerCase()).substr(0,1) +"." +(document.getElementById('username').value).toLowerCase();
    }
     
    function activer() {
    document.getElementById('dn').disabled=false;
    document.getElementById('non').checked=false;
    }
     
    function desactiver()
    {
    document.getElementById('dn').disabled=true;
    document.getElementById('oui').checked=false;
    }
    </script>
    <title>Page Accueil</title></head>
    <body>
    <h1>Bienvenue sur notre page d'ajout des utilisateurs</h1>
    <br>
    <meta http-equiv="Content/Type" content="text/html; charset=iso-8859-1">
    <form action="" method="POST" >
    <fieldset>
    	<legend>Formulaire de saisie</legend>
     
    Nom : <input id='username' type="text" name="username" placeholder="Durand" ><br><br>
    Prenom : <input id='prenom' type="text" name="prenom" placeholder="Jean" onchange="remplir()"><br><br>
    Mail : <input type="text" name="mail" placeholder="jean.durand@mail.fr"><br><br>
    Civilite :
    <input type="radio" name="civ" value="M" /> M.
    <input type="radio" name="civ" value="Mme"/> Mme.
    <input type="radio" name="civ" value="Mlle"/> Mlle.
    <br>N'oubliez pas de cocher votre civilite! <br>
    <br>
    Mot de passe : <input type="password" name="mdp" placeholder="********"><br>
    Retapez votre mot de passe : <input type="password" name="mdp2" placeholder="********"><br>
    Le format du mot de passe est de 6 caracteres minimum avec une lettre et un chiffre dedans.
    <br><br>
     
    Modifier l'identifiant de connexion ?<br>
    <input id="oui" type="radio" name="modification" value="oui" onclick="activer()"/>Oui
    <input id="non" type="radio" name"nonmodification" value="non" onclick="desactiver()"/>Non<br>
    dn : <input disabled="true" id="dn" type="text" name="dn" style="width:360px";><br>
    Identifiant de connexion par defaut, il sera modifier si il est deja utiliser dans la base de donnee. Il vous sera transmis lors de l'ajout.<br>
    <input id="button"  type="submit" value="Valider">
    <br>
    </fieldset>
    </form>
     
    <?php
     
    //import GroupOffice config
    include_once $goconfig;
     
    function replace_accents($str, $charset='utf-8')
    {
        $str = htmlentities($str, ENT_NOQUOTES, $charset);
     
        $str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
        $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. '&oelig;'
        $str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractÚres
     
        return $str;
    }
     
    $mailRegex='#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#'; // Pour le test de la validiter du mail
    $mdpRegex ='#^(?=.*[A-Za-z])(?=.*[0-9])(\w{6,})$#'; // Pour le test de la validiter du mot de passe
     
    // Si le tableau $_POST existe alors le formulaire a etait envoyer
    if(!empty($_POST))
    {
    // Le login est-il rempli ?
    if(empty($_POST['username']))
    {
    $message = 'Veuillez indiquer votre username svp !';
    }
    // Le prenom est-il rempli ?
    elseif(empty($_POST['prenom']))
    {
    $message = 'Veuillez indiquer votre prenom svp !';
    }
    // Le mail est-il rempli ?
    elseif (empty($_POST['mail'])) 
    {
    	$message = 'Veuillez entre une adresse mail  ( Exemple : test@operateur.fr)';
    }
     
    // Le mot de passe est-il rempli ?
    elseif(empty($_POST['civ']))
    {
    	$message = 'Veuillez indiquer votre civilite svp !';
    }
    // Le mot de passe est-il rempli ?
    elseif(empty($_POST['mdp']))
    {
    	$message = 'Veuillez indiquer votre mot de passe svp !';
    }
     
    elseif ($_POST['mdp'] != $_POST['mdp2']) 
    {
     
    	$message = 'Les deux mot de passe ne sont pas identique.';
    }
     
    //le mail est-il valide ou le mot de passe est valide ?
    elseif (!empty($_POST['mail']) or !empty($_POST['mdp']))
    {
     
    	if(!preg_match($mailRegex, $_POST['mail']))
    	{
    		$message = 'Veuillez mettre votre adresse mail au format valide (Exemple : test@operateur.fr).';
    	}
    	if(!preg_match($mdpRegex, $_POST['mdp']))
    	{
    		$message = 'Veuillez mettre un mot de passe valide (Exemple : testmdp17).';
    	}
    }	
     
    if(!empty($message))
    echo $message; 
     
    else
    {
     
    $sn =STRTOUPPER( htmlspecialchars($_POST['username'])); // recupere en format majuscule le nom
    $givenName =UCWORDS( htmlspecialchars($_POST['prenom'])); // recupere avec une majuscule au debut le prenom
    $passgedeon='{MD5}' . base64_encode(pack('H*', md5(htmlspecialchars($_POST['mdp']))));
    $mail = htmlspecialchars($_POST["mail"]);
    $title= htmlspecialchars($_POST["civ"]);
    $debutCn = SUBSTR(STRTOLOWER(replace_accents((htmlspecialchars($_POST['prenom'])))),0,1); // construit le debut du cn
    $finCn = STRTOLOWER(replace_accents(htmlspecialchars($_POST['username']))); //construit la fin du cn
    $cn = $debutCn.".".$finCn; // creer le cn sous le bon format
    $uid = $givenName." ".$sn; // creer le uid sous le bon format
    $valeur = replace_accents(htmlspecialchars($_POST["dn"]));

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Tu ne le récupères pas parce-qu'il est en disabled=true. Changes le pour readonly.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input readonly id="dn" type="text" name="dn" style="width:360px";>

  3. #3
    Invité
    Invité(e)
    Par défaut
    Même si je le passe en readonly, j'ai toujours un Undefined index quand je veux le récupérer..

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    As-tu enlever disabled ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Sinon, tu ajoutes un champ de type hidden dans lequel tu mettras la même valeur, tu pourras alors récupérer ce champ sans problème !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Oui, j'ai ça désormais :

    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
    <html>
    <head>
    <script type="text/javascript">
    function remplir()
    {
    document.getElementById('dn').placeholder =  ((document.getElementById('prenom').value).toLowerCase()).substr(0,1) +"." +(document.getElementById('username').value).toLowerCase();
     
    }
     
    function activer() {
    document.getElementById('dn').removeAttribute('readonly');
    document.getElementById('non').checked=false;
    }
     
    function desactiver()
    {
    document.getElementById('dn').setAttribute('readonly','readonly');
    document.getElementById('oui').checked=false;
    }
    </script>
    <title>Page Accueil</title></head>
    <body>
    <h1>Bienvenue sur notre page d'ajout des utilisateurs</h1>
    <br>
    <meta http-equiv="Content/Type" content="text/html; charset=iso-8859-1">
    <form action="" method="POST" >
    <fieldset>
    	<legend>Formulaire de saisie</legend>
     
    Nom : <input id='username' type="text" name="username" placeholder="Durand" ><br><br>
    Prenom : <input id='prenom' type="text" name="prenom" placeholder="Jean" onchange="remplir()"><br><br>
    Mail : <input type="text" name="mail" placeholder="jean.durand@mail.fr"><br><br>
    Civilite :
    <input type="radio" name="civ" value="M" /> M.
    <input type="radio" name="civ" value="Mme"/> Mme.
    <input type="radio" name="civ" value="Mlle"/> Mlle.
    <br>N'oubliez pas de cocher votre civilite! <br>
    <br>
    Mot de passe : <input type="password" name="mdp" placeholder="********"><br>
    Retapez votre mot de passe : <input type="password" name="mdp2" placeholder="********"><br>
    Le format du mot de passe est de 6 caracteres minimum avec une lettre et un chiffre dedans.
    <br><br>
     
    Modifier l'identifiant de connexion ?<br>
    <input id="oui" type="radio" name="modification" value="oui" onclick="activer()"/>Oui
    <input id="non" type="radio" name"nonmodification" value="non" onclick="desactiver()"/>Non<br>
    dn : <input readonly='true' id="dn" type="text" name="dn" style="width:360px";><br>
    Identifiant de connexion par defaut, il sera modifier si il est deja utiliser dans la base de donnee. Il vous sera transmis lors de l'ajout.<br>
    <input id="button"  type="submit" value="Valider">
    <br>
    </fieldset>
    </form>
     
    <?php
     
     
    function replace_accents($str, $charset='utf-8')
    {
        $str = htmlentities($str, ENT_NOQUOTES, $charset);
     
        $str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
        $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. '&oelig;'
        $str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractÃ&#131;Å¡res
     
        return $str;
    }
     
    $mailRegex='#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#'; // Pour le test de la validiter du mail
    $mdpRegex ='#^(?=.*[A-Za-z])(?=.*[0-9])(\w{6,})$#'; // Pour le test de la validiter du mot de passe
     
    // Si le tableau $_POST existe alors le formulaire a etait envoyer
    if(!empty($_POST))
    {
    // Le login est-il rempli ?
    if(empty($_POST['username']))
    {
    $message = 'Veuillez indiquer votre username svp !';
    }
    // Le prenom est-il rempli ?
    elseif(empty($_POST['prenom']))
    {
    $message = 'Veuillez indiquer votre prenom svp !';
    }
    // Le mail est-il rempli ?
    elseif (empty($_POST['mail'])) 
    {
    	$message = 'Veuillez entre une adresse mail  ( Exemple : test@operateur.fr)';
    }
     
    // Le mot de passe est-il rempli ?
    elseif(empty($_POST['civ']))
    {
    	$message = 'Veuillez indiquer votre civilite svp !';
    }
    // Le mot de passe est-il rempli ?
    elseif(empty($_POST['mdp']))
    {
    	$message = 'Veuillez indiquer votre mot de passe svp !';
    }
     
    elseif ($_POST['mdp'] != $_POST['mdp2']) 
    {
     
    	$message = 'Les deux mot de passe ne sont pas identique.';
    }
     
    //le mail est-il valide ou le mot de passe est valide ?
    elseif (!empty($_POST['mail']) or !empty($_POST['mdp']))
    {
     
    	if(!preg_match($mailRegex, $_POST['mail']))
    	{
    		$message = 'Veuillez mettre votre adresse mail au format valide (Exemple : test@operateur.fr).';
    	}
    	if(!preg_match($mdpRegex, $_POST['mdp']))
    	{
    		$message = 'Veuillez mettre un mot de passe valide (Exemple : testmdp17).';
    	}
    }	
     
    if(!empty($message))
    echo $message; 
     
    else
    {
     
    $sn =STRTOUPPER( htmlspecialchars($_POST['username'])); // recupere en format majuscule le nom
    $givenName =UCWORDS( htmlspecialchars($_POST['prenom'])); // recupere avec une majuscule au debut le prenom
    $passgedeon='{MD5}' . base64_encode(pack('H*', md5(htmlspecialchars($_POST['mdp']))));
    $mail = htmlspecialchars($_POST["mail"]);
    $title= htmlspecialchars($_POST["civ"]);
    $debutCn = SUBSTR(STRTOLOWER(replace_accents((htmlspecialchars($_POST['prenom'])))),0,1); // construit le debut du cn
    $finCn = STRTOLOWER(replace_accents(htmlspecialchars($_POST['username']))); //construit la fin du cn
    $cn = $debutCn.".".$finCn; // creer le cn sous le bon format
    $uid = $givenName." ".$sn; // creer le uid sous le bon format
    $dn = replace_accents(htmlspecialchars($_GET["dn"]));
    echo $givenName;
    echo $dn;
    }
    }
    ?>
    </body></html>

  7. #7
    Invité
    Invité(e)
    Par défaut
    J'ai vu une petite erreur lors de mon copier coller, c'est bien .value et pas .placeholder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function remplir()
    {
    document.getElementById('dn').value =  ((document.getElementById('prenom').value).toLowerCase()).substr(0,1) +"." +(document.getElementById('username').value).toLowerCase();
     
    }

  8. #8
    Invité
    Invité(e)
    Par défaut
    Comment ça un champ de type hidden ? tu aurais un exemple vite fait ?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="son_nom" value="sa_valeur" />
    Ainsi il ne sera pas affiché à l'écran mais tout à fait récupérable dans $_POST['son_nom'].

  10. #10
    Invité
    Invité(e)
    Par défaut
    Oui mais pour lui donner sa valeur, je fait de nouveau appel a ma fonction ? ^^.

    Puis mon but est de récupérer ce champ là, car il peut-être modifier donc bon..

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Tu lui donne sa valeur dans la même fonction, ainsi tu es sûr que lorsqu'un change, l'autre aussi.
    Si ton champ n'est modifié que par la fonction, alors il ne devrait pas y avoir de soucis. Si l'utilisateur peut le changer, alors tu peux ajouter un écouteur onchange et affecter sa valeur à l'input de type hidden.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Je ne vois pas comment faire la.. ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function remplir()
    {
    document.getElementById('dn').value =  ((document.getElementById('prenom').value).toLowerCase()).substr(0,1) +"." +(document.getElementById('username').value).toLowerCase();
    document.getElementById('hid').value = document.getElementById('dn').value;
    }
     
    <input type="hidden" name="test" id="hid">
     
     
    $test= replace_accents(htmlspecialchars($_GET["test"]));
     
    echo $dn;
    }

  13. #13
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    dans ton code d'origine :
    dans ton input dn supprime le ";" et ajoute "/"
    corrige également name"nonmodification"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Modifier l'identifiant de connexion ?<br>
    <input id="oui" type="radio" name="modification" value="oui" onclick="activer()"/>Oui
    <input id="non" type="radio" name="nonmodification" value="non" onclick="desactiver()"/>Non<br>
    dn : <input readonly='true' id="dn" type="text" name="dn" style="width:360px";/><br>
    Identifiant de connexion par defaut, il sera modifier si il est deja utiliser dans la base de donnee. Il vous sera transmis lors de l'ajout.<br>
    <input id="button"  type="submit" value="Valider">
    <br>
    ça devrais le faire.

  14. #14
    Invité
    Invité(e)
    Par défaut
    J'ai fait comme vous m'avez dit, mais mon erreur persiste.
    J'ai toujours une Notice de type Undefined index, et je ne peut pas récupérer la valeur..

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Peux-tu poster une version de ton code actuel ?

  16. #16
    Invité
    Invité(e)
    Par défaut
    Je n'ai rien dit, j'avais changer le $_POST en $_GET la dernière fois pour essayer, mais en faite, ça marche !!
    Merci beaucoup de toute votre aide, et de tout le temps consacré à la recherche de solutions.

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. javascript/php:recuperer une valeur de select dans une meme page dans une var php
    Par hraiwen dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 21/03/2009, 13h12
  2. Réponses: 2
    Dernier message: 22/08/2007, 13h53
  3. recuperation de données d'un formulaire PHP
    Par gailup dans le forum Langage
    Réponses: 1
    Dernier message: 14/06/2006, 21h49
  4. Recuperer la valeur dun formulaire effacé
    Par mael94420 dans le forum ASP
    Réponses: 2
    Dernier message: 07/03/2006, 15h32

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