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 :

transmission de variable dans POST


Sujet :

Langage PHP

  1. #1
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut transmission de variable dans POST
    Re ;
    formulaire page index.php:
    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
    <!DOCTYPE html>
    <HTML>
    <head>
    	<!--Pour forcer le navigateur à afficher en mode IE9, sans quoi il peut passer en mode quirks.-->
    	<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
    	<meta charset="utf-8" />
    	<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <!-- application dynamique  -->
    	<link rel="shortcut icon" href="image/favs3g.ico" />
    	<link rel="stylesheet" media="screen" type="text/css" href="css/style_div.css"> 
    	<title> Identification</title>
    </head>
    <body>
     
     
    	<div class="entete">
    			<div class="date">
    				        <?php
    						$jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
    						$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
    						$heure_courante = date ("H:i");
    						$dateDuJour = $jour[date("w")]." ".date("d")." ".$mois[date("n")]." ".date("Y")."     ".$heure_courante;
    						echo "Date:   ". $dateDuJour;
     
    						?> 
     
    			</div>
    			<div class="h1">
    				<h1> S-3-G: Identification </h1>
    		</div>
    	</div>
    		<div class="contenu"> 
    		<?php 
    			  if(isset($message))
    			  {
    			  echo $message;
    			  }
    		?>
    		<form class="form" action="http://localhost/s3g/codephp/valid.php" method="poste" " autocomplete='off'>
     
    			<p class="labelident"><label for="ident">Identifiant:</label> 
    					<input type="text" name="ident" value="" size="28" maxlength="23" id="ident" autofocus/>
     
    			</p>
    			<p class="labelpass"><label for="pass">Mot de passe:</label> 
    					<input type="password"  name="pass" value="" size="28" maxlength="23" id="pass"/>
     
    			</p>
     
    			<p class="buttons">
    				<button type="submit" name="sident" value="envoyer" >Connexion</button>
    			</p>
     
     
    		</form>
    	</div> 
    <footer class="pied">
    	<p> Copyright © s3g - Conception kacinet <p>
    </footer>
     
    </body>
     
    </html>
    page : valid.php
    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
    <?php
    header('Content-type: text/html; charset=UTF-8');
    // On récupère les champs du formulaire, et on arrange leur mise en forme
     
    	if(isset($_POST['sident'])) // on verrifier que l'utilisateur a cliquer sur le bouton conexion
    				{
    				// on affecte les variables
    					$ident = $_POST['ident'];
    					$pass  = $_POST['pass'];
    				echo".$ident.";		// pour voir si les donées sont bien transmis	
     
    				if (isset($ident)) $ident=trim(htmlspecialchars(stripslashes($ident))); 
    										// trim()  enlève les espaces en début et fin de chaine
    										// htmlspecialchars() permet de transformer les balises XHTML en entités HTML.	
    				if (isset($pass)) $pass=trim(htmlspecialchars(stripslashes($pass)));
    										// stripslashes()  retire les backslashes ==> \' devient '
     
     
    				}
    	// Après la mise en forme et l'affectation, on vérifie la validité des champs
    	 if (empty($ident))
    			{ // L'utilisateur n'a pas rempli le champ pseudo
    			$message="Veuillez renseigner le champ identifiant...";
    			echo".$message.";
     
    			//header ('location: ../index.php');
     
    			}
    sujet de mon post:
    quand je clique sur connexion en laissant le champs identifiant vide j'ai le message ".Veuillez renseigner le champ identifiant..." alors comment le faire apparaitre sur mon formulaire sous le champs identifiant?
    l'echo de la variable $ident ne m'affiche rien lors du teste?
    j'ai activé la variable globals (on).
    une aide sera la bienvenue

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Euh tu affiches pas ta variable là.
    Met directement :
    Pour utiliser les points c'est pour concaténer ta variable à du commentaire du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Ma variable identifiant vaut ".$ident." . Le test fonctionne";
    Puis j'ai jamais trop compris le fait de vérifier si le bouton a été appuyé ? Tu devrais plutot vérifier que ton champ login est bien rempli + le champs mot de passe.

    if((!empty($_post ....

    Ce que je propose :
    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
    <?php
    header('Content-type: text/html; charset=UTF-8');
    // On récupère les champs du formulaire, et on arrange leur mise en forme
     
    	if((!empty($_POST['ident']))&&(!empty($_POST['pass']))) // Vérification que les champs ne sont pas vides
    	{
     
    		echo $_POST['ident'] ;	// pour voir si les donées sont bien transmis	
     
    		$ident=trim(htmlspecialchars(stripslashes($_POST['ident']))); 
    			// trim()  enlève les espaces en début et fin de chaine
    			// htmlspecialchars() permet de transformer les balises XHTML en entités HTML.	
    		$pass=trim(htmlspecialchars(stripslashes($_POST['pass'])));
    			// stripslashes()  retire les backslashes ==> \' devient '
    	}
    	// Direct on regarde si c'est vide
    	else
    	{ // L'utilisateur n'a pas rempli le champ pseudo
    		$message="Veuillez renseigner le champ identifiant / mot de passe...";
    		echo $message ;
    		//header ('location: ../index.php');
     
    	}
    ?>
    Au lieu d'affecter tes variables poste et les vérifier plus tard, je propose un contrôle direct avec les !empty, ainsi si c'est vide, tu passes direct dans le else et affiche Erreur mot de passe ou identifiant.
    Ensuite, si ca passe la première condition, c'est que forcément tes variables sont affectés et non vides (pas besoin de refaire des isset derrière ...)

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    j'ai activé la variable globals (on).
    Et bien il valait mieux pas.
    La mettre à Off rend les choses plus sécurisées.
    Puis ce n'est pas global, mais register_global.

    La grosse insécurité que cela provoque quand on l'active, c'est de transformer chaque éléments des tableaux super globaux en variables.
    Dans ton exemple $ident et $pass seront automatiquement créés.


    Le mieux serait de créer u tableau où tu affecterais chaque message d'erreur selon la nature de l'erreur lors des différentes vérification.
    A la suite de ça, il suffit de vérifier si l'élément existe ou pas.
    Exemple :
    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
    <?php
    // Traitements/vérifications
    $erreurs_msg = array();
     
    // on verrifi que l'utilisateur a cliquer sur le bouton connexion
    if (isset($_POST['sident'])) {
        // on affecte les variables
        $ident = $_POST['ident'];
        $pass = $_POST['pass'];
     
        // On vérifie que les élément sont valides
        if (empty($ident )) {
            $erreurs_msg['ident'] = 'Veuillez saisir un Identifiant valide.';
        }
     
        if (empty($pass)) {
            $erreurs_msg['pass'] = 'Veuillez saisir un de passe valide.';
        }
    }
     
     
    // Partie Interface / HTML
    if (!empty($erreurs_msg['ident'])) {
        echo $erreurs_msg['ident'].'<br />';
    }
     
    if (!empty($erreurs_msg['pass'])) {
        echo $erreurs_msg['pass'].'<br />';
    }

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; bob633 j'ai essaye ton code mais rien ne s'affiche.
    RunCodePhp:
    j'ai activé register_globals pour permettre le passage des données du formulaire a la page valid.ph via la variable POST en détriment de la sécurité.
    si je désactive register_globals comment dois-je faire pour transmettre les données du formulaires.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Citation Envoyé par redoran Voir le message
    Re ; bob633 j'ai essaye ton code mais rien ne s'affiche.
    RunCodePhp:
    j'ai activé register_globals pour permettre le passage des données du formulaire a la page valid.ph via la variable POST en détriment de la sécurité.
    si je désactive register_globals comment dois-je faire pour transmettre les données du formulaires.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form class="form" action="http://localhost/s3g/codephp/valid.php" method="poste" " autocomplete='off'>
    C'est faut, met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form class="form" action="valid.php" method="post" " autocomplete='off'>
    C'est parce que ton method fonctionne pas que tu récupére rien dans tes $_POST ... Alors que quand tu fait ton isset de ta variable, ca fonctionne car pas de données en POST

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    J'avais pas vu l'erreur sur poste
    Mais il y a encore une quote " de trop.
    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form class="form" action="valid.php" method="post" autocomplete="off">
    si je désactive register_globals comment dois-je faire pour transmettre les données du formulaires.
    C'était surement dû à cette erreur de syntaxe c-dessus.
    En tout cas register_global n'agit pas sur la manière de transmettre les données, il agit uniquement dans la manière où elles seront obtenues.
    Si à On : Tous les éléments deviendront des variables.
    Si à Off : Il faudra exploiter les tableaux super globaux (comme $_GET, $_POST) pour récupérer les données.

  7. #7
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re; bob633
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part

    <form class="form" action="http://localhost/s3g/codephp/valid.php" method="poste" " autocomplete='off'>

    C'est faut, met :

    c'est une mesure de sécurité qui veut dire que le formulaire été bien posté de mon site www.monsite.com que j'ai changer en localhost du moment que je travail en local.
    j'ai meme changer en action="valid.php" résultat : erreur not found....
    c'est normale parce que le fichier se trouve a ./codephp/valid.php

    RunCodePhp : meme j'ai enlevé le (" ) résultat affiche toujours une page blanche ( champs remplis ou non).

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Oui j'ai voulu éditer pour le chemin mais peu importe, c'était l'idée de rajouter le locahost ou le site entier qui est inutile, on te donne l'idée, on va pas te faire le boulot non plus

    Déjà, commente toute ta page valid.php et met seulement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <?php echo $_POST['ident']; ?>
    Parce que il n'y a aucune raison que ce que j'ai proposé ne fonctionne pas. J'utilise toujours ca ...

    Tu as bien enlevé le "e" à method="post" ?

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Il y a quelque chose qui ne tourne pas rond.

    Mets de coté un moment ton code, et essai un code comme :
    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
    <!DOCTYPE html>
    <html>
    <head>
        <title>Essai formulaire</title>
    </head>
    <body>
        <div>Une fois validé :<br />
    <?php
    print_r($_POST);
    ?>
        </div>
     
        <div>
            <form action="#" method="post" autocomplete="off">
                <fieldset>
                    <input type="text" name="un_essai" value"123456789" />
                    <br /><input type="submit" name="submit_formu" value"Valider" />
                </fieldset>
            </form>
        </div>
     
    </body>
    </html>
    (ici c'est la même page qui sera rechargée, histoire de faire simple).
    Aussi, sur quel navigateur fais tu ces essais ?
    -> IE, FireFox, Chrome, Safari, ou/et sur plusieurs et même problème remarqué ?

    -> register_global à Off, quel que soit le problème.

    meme j'ai enlevé le (" ) résultat affiche toujours une page blanche
    Cette quote " est de trop, faut être clair la dessus
    Pour la page blanche, il faut activer la gestion des erreurs de Php : display_errors à On du php.ini.
    (ou faire un ini_set() en Php dans la page, au tout début).


    Il me semble que tu avais un problème similaire, non ? (ou alors c'était un autre membre).

    En tout cas il faut faire cela de manière la plus basique qu'il soit, pour au moins avoir les données retournées en POST.

  10. #10
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; bob633
    ta raison pour poste c'est post sans (e) c'est bien vue
    dé-fois notre cerveau ne joue des tours ( ce qu'on appel autocorrection...)
    avec echo $ident; ou echo "$ident"; les données sont affichés.
    c'était l'idée de rajouter le localhost ou le site entier qui est inutile
    là je crois que je vai revoir la doc
    on te donne l'idée, on va pas te faire le boulot non plus
    mon expérience en siteweb dynamique ( autoformation 01 mois et 20 jours) a raison de deux heures de programmation/ jours , sa me semble être loin de ceux qui demande de faire le travail a leurs place. Ok bob634
    merci pour ta contribution et ne prend pas mal mes propos

  11. #11
    Membre du Club
    Homme Profil pro
    au
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : au
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 52
    Points
    52
    Par défaut
    Voilà la solution que je te propose, dans ton header ou tu redirigeras celui qui a laissé le champ ident vide, tu pourra mettre dans l'url une GET et que tu contrôleras dans t a page d'accueil.

    voilà ce dont je te parle à propos du header :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header ('location: index.php?erreur');
    Maintenant il ne te reste qu'à contrôler $_GET['erreur'] dans t a page d'accueil

  12. #12
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Citation Envoyé par redoran Voir le message
    Re ; bob633
    ta raison pour poste c'est post sans (e) c'est bien vue
    dé-fois notre cerveau ne joue des tours ( ce qu'on appel autocorrection...)
    avec echo $ident; ou echo "$ident"; les données sont affichés.
    là je crois que je vai revoir la doc

    mon expérience en siteweb dynamique ( autoformation 01 mois et 20 jours) a raison de deux heures de programmation/ jours , sa me semble être loin de ceux qui demande de faire le travail a leurs place. Ok bob634
    merci pour ta contribution et ne prend pas mal mes propos
    Je ne prend rien mal. Je disais juste ca pour la remarque sur le chemin du fichier. J'ai laissé que le nom pour montrer que rajouter localhost n'est pas utile. Enfin personnellement, à moins qu'on me donne une excellente raison d'utiliser le chemin relatif du chemin absolue et inversement, sinon c'est du code de trop pour moi.

    Tant mieux si ca fonctionne

  13. #13
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam ; le code de la page valid.php
    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
     
    <?php
    header('Content-type: text/html; charset=UTF-8');
     
    // Traitements/vérifications
    $erreurs_msg = array();
     
     
     // on verrifi que l'utilisateur a cliquer sur le bouton connexion
    if (isset($_POST['sident'])) 
    	{
    		// on affecte les variables
    		$ident = trim(htmlspecialchars(stripslashes($_POST['ident'])));
    		$pass =  trim(htmlspecialchars(stripslashes($_POST['pass'])));
    		echo $ident; // pour vérifier que le contenu est bien transmis
     
    		// On vérifie que les élément sont valides
    		if (empty($ident )) 
    		{
    			$erreurs_msg['ident'] = 'Veuillez saisir un Identifiant valide.';
    			echo 'aaaaaa'; //pour verrifier que je suis dans le cas de condition2
     
    		}
     
    		elseif (empty($pass)) 
    		{
    			$erreurs_msg['pass'] = 'Veuillez saisir un de passe valide.';
    			echo 'bbbbbbb'; //pour verrifier que je suis dans le cas de condition2
    		}
    		else
    		{
    			header ('location: ../index.php'); //pour vérifier que je suis dans le cas de condition3
    		}
    	} 
    ?>
    le probléme comment affiché les messages dans mon formulaire ?
    RunCodePhp a proposé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Partie Interface / HTML
    if (!empty($erreurs_msg['ident'])) {
        echo $erreurs_msg['ident'].'<br />';
    }
     
    if (!empty($erreurs_msg['pass'])) {
        echo $erreurs_msg['pass'].'<br />';
    }
    alors j'ai insere ce code dans le div des input mais rien ne s'affiche !
    partie du code de la page index php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <p class="labelident"><label for="ident">Identifiant:</label> 
    					<input type="text" name="ident" value="" size="28" maxlength="23" id="ident" autofocus/>
    					<?php
    					if (!empty($erreurs_msg['ident'])) 
    					{
    					echo $erreurs_msg['ident'].'<br />';
    					} 
    					?>
    			</p>

  14. #14
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Pour afficher l'erreur sur la page courante en dessous ou au dessus du formulaire (si j'ai bien compris ?), je pense que la conception actuelle est délicate.

    Soit sur ta page valid.php, tu fait une redirection en envoyant ton message d'erreur en paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: ../../index.php?msg="ton msg"');
    Mais pas très jolie car le message apparaitra en clair dans la barre url ..

    Peut-être mettre un champs hidden sur valid.php pour renvoyer la donnée en POST puis une redirection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header('Location: ../../index.php');
    <input type="text" name="var" value="ton msg" />
    En gros c'est du POST au lieu du GET (mais je sais pas si ca fonctionne avec une redirection. Sur ta page index, tu récupères ce message.

    Soit il faut revoir un peu ta conception et vérifier la connexion dans la page index.php directement.

    Tu peux peut-être appeler une fonction pour la vérification qui te renverra le message d'erreur et là il s'affichera où tu veux dans ta page ?

  15. #15
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; merci bob634 : je n'arréte pas d'ecrire bob634 mais ta pas fait attention ; simplement c bob633 +1
    voila dans ton poste :
    Soit il faut revoir un peu ta conception et vérifier la connexion dans la page index.php directement.

    Tu peux peut-être appeler une fonction pour la vérification qui te renverra le message d'erreur et là il s'affichera où tu veux dans ta page ?
    tu ma donnée une orientation vers include , j'ai renomé mon fichier valid.php en valid.inc.php et j'ai insere le code comme suite :
    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
     
    <form class="form" action="#" method="post"  autocomplete='off'>
     
    			<p class="labelident"><label for="ident">Identifiant:</label> 
    					<input type="text" name="ident" value="" size="28" maxlength="23" id="ident" autofocus/>
    					<?php
    					include('./codephp/valid.inc.php'); 
    					if (!empty($erreurs_msg['ident'])) 
    					{
    					echo $erreurs_msg['ident'].'<br />';
    					} 
    					?>
    			</p>
    			<p class="labelpass"><label for="pass">Mot de passe:</label> 
    					<input type="password"  name="pass" value="" size="28" maxlength="23" id="pass"/>
    					<?php
    					include('./codephp/valid.inc.php'); 
    					if (!empty($erreurs_msg['ident'])) 
    					{
    					echo $erreurs_msg['ident'].'<br />';
    					} 
    					?>
     
    			</p>
    			<p class="labelpass"><label for="captcha">Texte de l'image:</label> 
    					<input type="text"  name="captcha" value="" size="5" maxlength="5" id="captcha"/>
     
    			</p>
     
    			<p class="buttons">
    				<button type="submit" name="sident" value="envoyer" >Connexion</button>
    			</p>
     
     
    		</form>
    résultat quand je clique sur le bouton connexion sachant que le champs identifiant est vide normalement j'aurai un msg " Veuillez saisir un Identifiant valide" sous le input identifiant et là je l'ai sous les deux champs identifiant et mot de passe.
    je crois que ma condition if...elseif...else... citée cidessus ne marche pas bien !!!

  16. #16
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Le plus simple à mon sens serait de tout faire dans une seule page, c'est à dire index.php.

    En somme, de procéder de manière inverse (d'indiquer index.php dans le action du formulaire).
    - Le formulaire d'identification se trouve dans index.php
    - L'utilisateur valide le formulaire. On recharge quelque par cette même page index.php

    Puis 2 cas possibles après validation :
    - SI l'identification est correcte : On effectue une redirection (valid.php ou autre) ou alors on reste dans la page index.php.
    - SINON on reste dans le index.php, pas de redirection (tant qu'il y aura une erreur). Ceci permettra d'afficher le message d'erreur sans devoir transmettre quoi que ce soit étant donné que tout déroule dans cette même page (on a tout sous le coude : le message, les données en POST pour éventuellement les ré-exploiter).


    En tout cas, une redirection (un header) ne permet pas de (re)transmettre des données en POST, ce qui complique les choses, cela suppose de retransmettre les données (ou messages d'erreurs) en GET.
    Ce qui obligera de vérifier ces données là dans le index.php.
    Quelque part on s'en sort plus.

    C'est une idée.

  17. #17
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Je pense que tu te compliques la vie cher ami =)

    Ton include tu dois le faire qu'une fois en début de page index.php

    C'est en css que tu positionneras le message d'erreur où tu veux.

    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
    // Traitements/vérifications
    $erreurs_msg = array();
     
     // on verrifi que l'utilisateur a cliquer sur le bouton connexion
    if (isset($_POST['sident'])) 
    	{
    		// on affecte les variables => Et si elles sont vides ?
    		$ident = trim(htmlspecialchars(stripslashes($_POST['ident'])));
    		$pass =  trim(htmlspecialchars(stripslashes($_POST['pass'])));
    		echo $ident; // pour vérifier que le contenu est bien transmis
     
    		// On vérifie que les élément sont valides
    		if (empty($ident )) 
    		{
    			$erreurs_msg['ident'] = "<p id=\"id_p\" >Veuillez saisir un Identifiant valide.</p>"; // j'ai mis dans un <p> pour positionner ton message où tu veux en css
     
    		}
     
    		elseif (empty($pass)) 
    		{
    			$erreurs_msg['pass'] = "<p id=\"id_p2\" >Veuillez saisir un de passe valide.</p>";
    		}
    		else
    		{
    			echo "Vous êtes maintenant identifié"; //pour vérifier que je suis dans le cas de condition3
     
    		}
    	}
    index.php
    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
    <!DOCTYPE html>
    <HTML>
    <head>
    	<!--Pour forcer le navigateur à afficher en mode IE9, sans quoi il peut passer en mode quirks.-->
    	<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
    	<meta charset="utf-8" />
    	<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <!-- application dynamique  -->
    	<link rel="shortcut icon" href="image/favs3g.ico" />
    	<link rel="stylesheet" media="screen" type="text/css" href="css/style_div.css"> 
    	<title> Identification</title>
    </head>
    <body>
    <?php
    	include("path/valid.php");
    ?>
     
    <div class="entete">
    	<div class="date">
    		<?php
    			$jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
    			$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
    			$heure_courante = date ("H:i");
    			$dateDuJour = $jour[date("w")]." ".date("d")." ".$mois[date("n")]." ".date("Y")."     ".$heure_courante;
    			echo "Date:   ". $dateDuJour;
    		?> 
    	</div>
    	<div class="h1">
    		<h1> S-3-G: Identification </h1>
    	</div>
    </div>
    		<div class="contenu"> 
    		<?php 
    			  if(isset($message))
    			  {
    			  echo $message;
    			  }
    		?>
    		<form class="form" action="index.php" method="post" " autocomplete='off'>
     
    			<p class="labelident"><label for="ident">Identifiant:</label> 
    					<input type="text" name="ident" value="" size="28" maxlength="23" id="ident" autofocus/>
     
    			</p>
    			<p class="labelpass"><label for="pass">Mot de passe:</label> 
    					<input type="password"  name="pass" value="" size="28" maxlength="23" id="pass"/>
     
    			</p>
     
    			<p class="buttons">
    				<button type="submit" name="sident" value="envoyer" >Connexion</button>
    			</p>
     
     
    		</form>
    	</div> 
    <footer class="pied">
    	<p> Copyright © s3g - Conception kacinet <p>
    </footer>
     
    </body>
     
    </html>
    Par contre un truc m'interpelle. Tu vérifies que le bouton submit est bien appuyé, après tout pourquoi pas.

    Par contre tu affectes tes variables $_post avant de les vérifier, si les champs sont vides, ca va te dire que tes variables sont indéfinies .. pas très jolie :/

    Quand j'ai étudié le PHP (peut-être vieille école), il nous suffisait de vérifier les $_POST avec empty ou isset ... et si les deux sont non vides, alors on affectes ou on traite la demande.

    A moins que tu comptes insérer une fonction javascript qui vérifie que les champs sont non vides avant de les transmettre ?

    edit : si tu veux pas t'embêter avec du css pour positionner, tu peux aussi créer une petite boite de dialogue (une div simple) en display:non; et la rendre visible avec du JS lorsque tu veux afficher ton message d'erreur .. Et avec innerHTML modifier ta div pour le texte

  18. #18
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; bob634:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ....
    </head>
    <body>
    <?php
    	include("path/valid.php");
    ?>
     
    <div class="entete">
    .....
    j'ai changer en tête de page comme suite est sa marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    <?php
    	include('./codephp/valid.inc.php'); 
    	?>	
    <!DOCTYPE html>
    <HTML>
    <head>
    .....
    Par contre tu affectes tes variables $_post avant de les vérifier, si les champs sont vides, ca va te dire que tes variables sont indéfinies .. pas très jolie :/
    là +1 question de raisonnement je vais revoir ma condition.
    Quand j'ai étudié le PHP (peut-être vieille école), il nous suffisait de vérifier les $_POST avec empty ou isset ... et si les deux sont non vides, alors on affectes ou on traite la demande.

    A moins que tu comptes insérer une fonction javascript qui vérifie que les champs sont non vides avant de les transmettre ?
    je suis entrain d'apprendre le php ....désolé pour les erreurs , et pour la vérification je vérifier avec javscript au niveau du client ensuite une autre vérification au niveau du serveur en cas ou ( donc double contrôle).
    apparemment sa marche avec le code suivant de la page valid.inc.php:
    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
     
    <?php
    header('Content-type: text/html; charset=UTF-8');
     
    // Traitements/vérifications
    $erreurs_msg = array();
     
     
     // on verrifi que l'utilisateur a cliquer sur le bouton connexion
    if (isset($_POST['sident'])) 
    	{
    		// on affecte les variables
    		$ident = trim(htmlspecialchars(stripslashes($_POST['ident'])));
    		$pass =  trim(htmlspecialchars(stripslashes($_POST['pass'])));
    		//echo $ident;
     
    				// On vérifie que les élément sont valides
    		if (empty($ident )) 
    			{
    				$erreurs_msg['ident'] = 'Veuillez saisir un Identifiant.';
    			}
     
    		elseif (empty($pass)) 
    			{
    				$erreurs_msg['pass'] = 'Veuillez saisir un mot de passe valide.';
    			} 	
    		else 
    			{
    				header ('location: ./index.php'); //pour vérifier que je suis dans le cas de condition3
    				echo "Vous êtes maintenant identifié"; 
    			}
    	}
     
    ?>
    mais y'a toujours un problème :
    le champs identifiant perd son contenu ainsi que le focus lors de rechargement de la page (setfocus)....

  19. #19
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    C'est normal, lorsque tu es dans la bonne condition (dernier else), tu fais une redirection vers la page où tu es déjà Mais le $_POST ne fonctionne plus après rechargement de la page ou redirection =)

    Enlève ta redirection, ca fonctionnera tout aussi bien comme ton include est dans ta page principale

    Et si vraiment tu arrives à avoir des cas où tu rediriges, tu peux utiliser des variables de session pour les utiliser où tu veux ensuite.

    Ca fonctionne comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php session_start();
    $_SESSION['ident'] = $_POST['ident'];
    ?>
    Ta variable $_SESSION sera sauvegardé jusqu'à que tu ferme ton navigateur. Mais ici tu devrais pas en avoir besoin

  20. #20
    Membre du Club
    Homme Profil pro
    au
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : au
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 52
    Points
    52
    Par défaut
    As tu essayé la méthode que je t'ai donné, et y a aussi la solution de RunCodePhp qui est bien aussi.

Discussions similaires

  1. [AJAX] Utiliser une variable dans $.post()
    Par vinze60 dans le forum AJAX
    Réponses: 2
    Dernier message: 14/01/2012, 14h55
  2. recuperation string+variable dans post
    Par ramdamriddim dans le forum Langage
    Réponses: 2
    Dernier message: 28/05/2009, 15h58
  3. transmission de variable dans un lien
    Par Bathou dans le forum Langage
    Réponses: 4
    Dernier message: 04/06/2008, 11h38
  4. transmission de variable dans url
    Par heteroclite dans le forum Langage
    Réponses: 13
    Dernier message: 15/09/2006, 21h29
  5. Problème dans transmission de variables dans anim
    Par baleiney dans le forum Flash
    Réponses: 1
    Dernier message: 13/08/2006, 11h26

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