formateur informatique

Formulaire du compte utilisateur authentifié

Accueil  >  Technique  >  Php  >  Php Avancé  >  Formulaire du compte utilisateur authentifié
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Formulaire de compte utilisateur

Les démonstrations à suivre s'inscrivent dans la suite logique des formations Php amorcées sur les techniques d'inscription et d'identification. Dans les formations précédentes, nous avons appris des notions fort intéressantes. En premier lieu, nous avons réalisé l'insertion d'internautes en base de données. Pour cela, nous avons exploité un formulaire Web client que nous avions conçu en Javascript. Nous avons réceptionné ces données côté serveur et exécuté une requête action Insert Into en Php. C'est ainsi que nous avons réussi l'ajout dynamique de données.

Formulaire authentification Web pour identifier un internaute

Et puis, nous avons appris à interroger cette base de données à la recherche de la paire identifiant/mot de passe d'un utilisateur inscrit. Pour cela, nous avons exploité une autre application Web cliente que nous avions développée en Javascript. Il s'agit d'un formulaire d'identification sécurisée anti-capture de saisie, grâce à l'inscription du mot passe avec un pavé numérique. Nous avons réceptionné ces données côté serveur. Nous les avons exploitées dans une clause Where d'une requête SQL sélection, à la recherche de la paire dans la base de données. Nous avons exécuté cette requête par le code Php. A réception des informations, nous avons ouvert l'accès de l'internaute identifié, grâce à un état de session. Ce dernier porte la valeur de la clé primaire pour son enregistrement en base de données. C'est cette valeur qui doit lui permettre d'accéder à ses informations de compte.

Vous le constaterez, en bas de page figure un jeu des trois icônes permettant de conduire vers les rubriques annexes. La troisième est barrée interdisant l'accès à la page des informations personnelles, tant que l'internaute n'est pas reconnu.

Tel que nous l'avions réalisé lors de la formation précédente :
  • Si nous tapons un identifiant enregistré en base de données, dans la première zone de saisie : tatouille@free.fr,
  • Si nous inscrivons son mot de passe associé : 122333, à l'aide du pavé numérique,
  • Enfin, si nous cliquons sur le bouton Valider pour soumettre ces informations au serveur,
Nous constatons qu'un PostBack est généré. Dès lors, l'accès semble déverrouillé en bas de page. L'icône est débarrassée de son symbole de sens interdit. En effet, c'est l'application que nous avons développée dans la formation précédente.

La paire identifiant/mot de passe est réceptionnée côté serveur par le code Php. Elle est exploitée dans une clause Where d'une requête SQL sélection à la recherche de correspondance dans la base de données bd_gestion. Comme cette paire est trouvée, la requête récupère la valeur du champ de la clé primaire. Cette dernière est stockée dans l'état de session, désormais attaché à l'internaute fraîchement identifié. Jusqu'à sa déconnexion, cette valeur le suivra dans sa navigation.

Utilisateur authentifié en Php, accès déverrouillé au formulaire de compte

Désormais, si nous cliquons sur cette icône en pied de page, nous basculons sur une interface semblable à celle du formulaire d'inscription. Mais sa fonction est de permettre la modification des données. Comme vous le remarquerez, à ce stade le formulaire est neutre. C'est l'enjeu de cette formation. Grâce à la variable de session, au chargement de la page, nous devons exécuter une requête Sql à la recherche de cette clé primaire dans la base de données, pour restituer toutes les informations liées et les inscrire dans les champs respectifs.

Formulaire Web de compte utilisateur identifié à remplir automatiquement par le code PHP

Sources pour le développement
Ces sources sont riches et nous proposons de les récupérer avec les développements associés. Bien sûr, vous devez avoir suivi la formation sur la création de la base de données MySql. Mais elle est elle aussi proposée dans le package à télécharger. Comme vous le constatez, la décompression conduit au fichier de la page Web principale. Il est nommé index.php. Il correspond au formulaire d'identification tout à fait fonctionnel. Il est accompagné de ses pages annexes. Il s'agit du formulaire d'inscription et du formulaire de compte utilisateur.

Les sous dossiers offrent les ressources externes dont les scripts Javascript, pour les fonctions de contrôle de saisie, sur le formulaire d'inscription. Le sous dossier commun stocke toutes les portions communes de code Php, imbriquées les unes dans les autres, grâce à l'instruction Php Include. Nous ne revenons pas sur ces constructions que nous avons explicitées et démontrées en détail dans les deux formations précédentes.

Le sous dossier bdd offre la petite base de données bd_gestion des inscrits. Il convient donc de l'importer dans PhpMyAdmin si elle est manquante. Vous devrez créer le compte utilisateur disposant des privilèges d'accès pour le code PHP.
  • Double cliquer sur le sous dossier commun pour l'ouvrir,
  • Cliquer droit sur le fichier ouvrir.php,
  • Dans le menu contextuel, choisir de l'ouvrir avec un éditeur tel que le Notepad ++,
<?php
// Initialisation de la connexion
$liaison = mysqli_connect("127.0.0.1", "moimeme", "mm127eM") or die ("Accès à la base de donnée impossible !!!");
mysqli_select_db($liaison, "bd_gestion") or die ("Accès à la base de donnée impossible !!!");

$url_en_cours = $_SERVER['REQUEST_URI'];
...


Comme vous le remarquez, ces informations de connexion y sont révélées. Les trois paramètres de la fonction Php mysqli_connect sont dans l'ordre : le nom d'hôte, le nom d'utilisateur et le mot de passe associé. Il en résulte la chaine de connexion stockée sous le nom de variable liaison. Nous l'exploiterons pour exécuter nos requêtes.

Porter une variable de session
Nous proposons tout d'abord d'accéder au code précédent du formulaire d'identification.
  • A la racine du dossier de décompression, cliquer droit sur le fichier index.php,
  • Dans le menu contextuel, choisir de l'ouvrir avec un éditeur comme le Notepad++,
C'est le code de la section Php située en entête de page qui nous intéresse. <?php
include("commun/entete.php");

if(isset($_POST["identifiant"]) && $_POST["identifiant"]!="")
{
$_SESSION["utilisateur"]="";
$lid = $_POST["identifiant"];
$le_mp = $_POST["motPasse"];

$requete = "SELECT inscr_num FROM inscr WHERE inscr_mail='".$lid."' AND inscr_mp='".$le_mp."'";
$retours = mysqli_query($liaison, $requete);
$retour = mysqli_fetch_array($retours);

if($retour["inscr_num"]!="")
$_SESSION["utilisateur"] = $retour["inscr_num"];

}
?>

<script language="javascript" src="js/paire_id.js"></script>
...


Nous y notons le test réalisé pour la réception des données après la soumission du formulaire. La requête tente de récupérer les données sur cette paire transmise. Si elle retourne un résultat (if($retour["inscr_num"]!="")), nous initialisons la variable de session sur la valeur de la clé primaire restituée. C'est cette variable de session qui, comme nous l'avions démontré dans la construction, déverrouille l'accès aux informations de compte.

Nous proposons tout d'abord de vérifier que cette valeur est portable. Pour cela, nous devons commencer par accéder au code de la page concernée par notre développement. Il s'agit du formulaire des informations personnelles de compte.
  • A la racine du dossier de décompression, cliquer droit sur le fichier compte.php,
  • Dans le menu contextuel, choisir de l'ouvrir avec le Notepad ++,
En entête, vous notez la réplique du code Php ayant servi à l'insertion des données depuis le formulaire d'inscription. Nous devrons adapter ce dernier et notamment sa requête Sql. Il s'agira désormais d'une requête mise à jour, soit d'une requête Update. Son objectif n'est pas de créer un nouvel enregistrement. Elle doit mettre à jour les informations d'un enregistrement existant. Mais ce travail concerne la prochaine formation. Dans un premier temps, nous devons être en mesure de vérifier la portabilité de la variable de session.
  • Passer en commentaire le code à l'intérieur de l'instruction conditionnelle,
  • Puis, juste au-dessus, réaliser un test sur l'existence de la variable de session,
<?php
include("commun/entete.php");

$inscr_num = "";
if(isset($_SESSION["utilisateur"]))
{
$inscr_num = $_SESSION["utilisateur"];
}


if(isset($_POST["nom"]))
{
/*
$la_civilite = $_POST["civilite"]==1?"Madame":"Monsieur";
$le_nom = utf8_decode(addslashes($_POST["nom"]));
$le_prenom = utf8_decode(addslashes($_POST["prenom"]));
$la_naissance = $_POST["date_n"];
$le_mail = $_POST["mail_inscr"];
$le_mp = utf8_decode(addslashes($_POST["mp_inscr"]));

$requete = "INSERT INTO inscr (inscr_civilite, inscr_nom, inscr_prenom, inscr_date, inscr_mail, inscr_mp) VALUES
('".$la_civilite."', '".$le_nom."', '".$le_prenom."', '".$la_naissance."', '".$le_mail."', '".$le_mp."');";
$retours = mysqli_query($liaison,$requete) or die ("problème avc la requète ".$requete);
*/
}
?>
...


Comme toujours, c'est la fonction Php isset qui permet de tester l'existence de la variable qui lui est passée en paramètre.
  • Atteindre le calque d'identifiant message, plus bas dans le code de la page,
Le code que nous y trouvons consistait à confirmer ou infirmer le succès de l'inscription. Il ne concerne plus cette page de compte.
  • Supprimer le code situé dans la section Php de cette balise,
  • Le remplacer par le test suivant sur la variable de session,
...
<div id="message">
<?php
echo $inscr_num;
?>
</div>
...


Avant d'opérer et de constater les résultats, nous proposons de prendre quelques repères.
  • Enregistrer les modifications et revenir sur l'interface d'EasyPhp,
  • Cliquer sur le bouton Open du module MySql pour accéder à PhpMyAdmin,
  • Dans le volet de gauche, déployer l'arborescence de la base de données bd_gestion jusqu'à afficher le contenu de sa table,
Données utilisateurs inscrits en table de base de données MySql

Pour un test concluant, nous choisissons d'agir sur l'utilisateur Arlette Hamalibou. Nous devons l'identifier avec la paire arlette@sfr.fr / 899123. Il doit en résulter la clé primaire 4 inscrite en variable de session et restituée sur la page de compte.
  • Basculer sur le navigateur Web et accéder à la page d'identification,
  • Saisir l'identifiant arlette@sfr.fr,
  • Inscrire le mot de passe 899123 avec les boutons du pavé,
Authentification sécurisée par formulaire Internet Javascript Php

Comme vous le remarquez, le mot de passe est fort logiquement encodé.
  • Cliquer sur le bouton Valider pour soumettre ces informations et procéder à l'identification,
Le PostBack a lieu en effet. L'accès aux informations de compte est toujours déverrouillé. L'utilisateur est donc bien reconnu. La requête Sql est un succès.
  • En bas de page, cliquer sur la troisième icône, celle de droite,
Transmettre valeur de variable de session entre les pages du site pour reconnaître internaute

Comme vous le remarquez, nous parvenons à restituer l'information de la clé primaire pour l'internaute identifié. Nous le suivons à la trace et sommes en mesure de lui proposer une navigation personnalisée. La variable de session demeure donc fort logiquement au fil de la navigation de l'internaute.

Récupérer les informations de base de données
Nous devons exploiter cette valeur en clause Where d'une requête SQL sélection. La correspondance doit être faite sur le champ inscr_num. L'objectif est de restituer toutes les informations liées à l'internaute authentifié.
  • Revenir dans le code de la page compte.php,
  • Dans la première instruction conditionnelle, sous l'affectation de la variable de session, ajouter les instructions suivantes :
...
$inscr_num = "";
if(isset($_SESSION["utilisateur"]))
{
$inscr_num = $_SESSION["utilisateur"];

$requete = "SELECT * FROM inscr WHERE inscr_num=".$inscr_num.";";
$retours = mysqli_query($liaison,$requete);
$retour = mysqli_fetch_array($retours);

if($retour["inscr_num"]!="")
{
$la_civilite = $retour["inscr_civilite"];
$le_nom = utf8_encode($retour["inscr_nom"]);
$le_prenom = utf8_encode($retour["inscr_prenom"]);
$la_naissance = $retour["inscr_date"];
$le_mail = $retour["inscr_mail"];
$le_mp = $retour["inscr_mp"];
}

}
...


Nous aurions d'ailleurs pu prélever les lignes que nous avions codées pour la page identification. Les adaptations sont en effet mineures.

La requête consiste donc à sélectionner tous les champs (*) de la table inscr (FROM inscr) pour lesquels la clé primaire (inscr_num) est égale à la valeur transmise dans l'état de session ($inscr_num). Comme il s'agit d'une donnée numérique, nous ne l'encadrons pas de simples côtes comme nous l'avions fait dans la clause Where de la formation précédente. Comme toujours, nous exécutons cette requête grâce à l'instruction Php mysqli_query. Nous lui passons la chaîne de connexion en premier paramètre et la requête en second.

Puis, nous exploitons la fonction Php mysqli_fetch_array. Cette dernière agit sur la variable ayant stocké les résultats de la requête sélection exécutée. Elle permet de découper les informations en tableau de variables, selon les noms de champs réceptionnés depuis la base de données. La variable retour ainsi affectée est donc transformée en tableau de variables à la volée. C'est ainsi que nous pouvons accéder à chaque champ après avoir vérifié que la requête a bien produit un résultat (if($retour["inscr_num"]!="")). Ce résultat correspond aux données de l'internaute identifié. Nous stockons toutes ses informations dans des variables respectives déclarées à la volée.

Dans le formulaire d'inscription, nous avions exploité la fonction Php Utf8_decode pour insérer les données en base de données. Nous étions ainsi en conformité avec le système d'encodage défini. Pour la restitution sur la page Web et la bonne interprétation des caractères latins, nous exploitons cette fois la fonction Php Utf8_encode. Seuls les champs accueillant potentiellement des accents sont traités.

Nous proposons de réaliser un essai avant de restituer ces informations dans les champs respectifs du formulaire.
  • Atteindre le calque d'identifiant message et adapter son code comme suit :
...
<div id="message">
<?php if(isset($retour["inscr_num"]))
echo $la_civilite." - ".$le_nom." - ".$le_prenom." - ".$la_naissance." - ".$le_mail." - ".$le_mp;

?>
</div>
...


Bien entendu, nous commençons par tester l'existence des résultats de la requête sur l'un de ses champs. Puis, nous concaténons les informations dans une instruction Php echo pour les afficher en lieu et place.
  • Enregistrer les modifications et basculer sur le navigateur Web,
  • Rafraîchir la page du formulaire de compte à l'aide de la touche F5 du clavier,
Comme vous le constatez, en témoigne le calque message, nous sommes bien parvenus à récupérer toutes les informations attachées au compte de l'utilisateur authentifié. Il s'agit maintenant de les placer aux bons endroits, soit dans les contrôles Html respectifs.

Récupérer les informations du compte utilisateur selon variable de session par requête SQL exécutée en PHP
  • Revenir dans l'éditeur de code de la page compte.php,
  • Puis, passer en commentaire le code Php du calque message,
Il s'agit de réaliser des imbrications classiques de code dynamique Php dans le code statique Html. Pour les zones de saisie, soit les contrôles input de type text, c'est la propriété value qui nous intéresse. C'est elle qui permet d'affecter le contenu d'une zone de texte.
  • Répliquer les adaptations notées en gras dans le code Html livré ci-dessous,
...
<div class="div_input_form">
<select id="civilite" name="civilite" onChange="Javascript:if(this.value>0){b_civilite = true; } else { b_civilite = false; }">
<option value="0">Civilité</option>
<option value="1" <?php if($la_civilite=="Madame"){ ?> selected <?php } ?>>Madame</option>
<option value="2" <?php if($la_civilite=="Monsieur"){ ?> selected <?php } ?>>Monsieur</option>
</select>
</div>
<div class="div_input_form">
<input type="text" name="nom" id="nom" maxlength="50" class="input_form" value='<?php echo $le_nom; ?>'... />
</div>
<div class="div_input_form">
<input type="text" name="prenom" id="prenom" maxlength="50" class="input_form" value='<?php echo $le_prenom; ?>'... />
</div>
<div class="div_input_form">
<input type="text" name="date_n" id="date_n" maxlength="50" class="input_form" value='<?php echo $la_naissance; ?>' ... />
</div>
<div class="div_input_form">
<input type="text" name="mail_inscr" id="mail_inscr" maxlength="150" class="input_form" value='<?php echo$le_mail; ?>'... />
</div>
<div class="div_input_form">
<input type="text" name="cmail_inscr" id="cmail_inscr" maxlength="150" class="input_form" value='<?php echo $le_mail; ?>' ... />
</div>
<div class="div_input_form">
Votre mot de passe : entre 5 et 10 chiffres<br />
<input type="password" name="mp_inscr" id="mp_inscr" maxlength="10" class="input_form" value="<?php echo $le_mp; ?>" ... />
</div>
<div class="div_input_form">
Confirmer le mot de passe :<br />
<input type="password" name="mp_conf" id="mp_conf" maxlength="10" class="input_form" value="<?php echo $le_mp; ?>" ... />
</div>
...


Les valeurs de chacun des champs deviennent donc dynamiques. Nous ne faisons pas de test avant insertion cette fois-ci. Nous partons du principe fort logique que si cette page est affichée, c'est que l'utilisateur est bien identifié. L'accès est en effet verrouillé le cas échéant. Vous avez noté la construction spécifique pour la liste déroulante. Elle consiste à ajouter dynamiquement l'attribut statique Html selected selon la valeur mémorisée dans la variable la_civilite. C'est ainsi qu'elle restituera automatiquement la bonne donnée à l'affichage.
  • Enregistrer les modifications et basculer sur le navigateur Web,
  • Rafraîchir la page du formulaire de compte à l'aide de la touche F5,
Comme vous le constatez, nous avons franchi cette première étape avec succès. Toutes les informations attachées à l'internaute identifié, sont restituées dans les champs respectifs du formulaire. Dans la prochaine étape, il s'agira de permettre la modification de ces données pour la mise à jour des informations en base de données.

Restituer données de compte internaute sur formulaire Web par requête SQL sur base de données selon identifiant en variable de session Php

Si vous vous identifiez avec un autre compte et que vous affichez le formulaire des informations personnelles, vous constatez avec satisfaction, qu'elles lui sont attachées.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn