Page
1 | 2
Inscription et modification de profil
Reste maintenant à créer l'interface pour l'inscription
d'un membre, et la mise en base de données de ses informations
personnelles. Nous avons choisi d'utiliser le même fichier
pour l'inscription proprement dite et pour la modification du profil.
Nous l'appelons register.php. Nous allons tirer profit dans
sa constitution de notre méthodologie
de validation de formulaire en PHP.
<?
session_start();
// instructions empêchant le caching
de la page:
header("Cache-control: private, no-cache");
header("Expires: Mon, 25 Feb 2002 01:00:00 GMT");
header("Pragma: no-cache");
// instructions de connexion à
la base de donnée
if(session_is_registered("userid")){$modifier=1;}
// caractérise la modification
par rapport à l'inscription
if($validation){ // s'il y a eu envoi
de données au script (voir plus bas)
$error=array(); // initialisation
du tableau des erreurs éventuelles
//
Création d'un tableau contenant tous les identifiants
des membres déjà inscrits
$requete_sql="SELECT
userid FROM membres";
$resultat=mysql_query($requete_sql, $connect)
// où
$connect est la variable caractérisant la connexion
établie plus haut
$listeid=array();
while($user=mysql_fetch_array($resultat)){array_push($listeid,$user[userid]);}
// instructions
traitant les champs et alimentant le cas échéant
le tableau $error
if(empty($formuserid)){array_push($error,"Vous
n'avez pas saisi d'identifiant");}
else if(in_array($formuserid,$listeid)){array_push($error,"Identifiant
déjà pris");}
// etc...
if(!count($error)){
// si le tableau $error est vide
if(!$modifier){ //
inscription
//
insertion des informations en base de donnée:
$formuserpass=md5($formuserpass);
$insert_sql="INSERT_SQL
membres (userid,userpass[,usermail,...])
VALUES ('$formuserid','$formuserpass'[,'$formusermail'...])";
$resultat=mysql_query($requete_sql,
$connect);
//
enregistrement des variables de session:
$userid=$formuserid;session_register("userid");
//
etc...
//
redirection par exemple vers la home page:
$url="/index.php";
}else{
// modification
// récupération
de l'id de la ligne de base de données concernant le
membre identifié
$requete_sql="SELECT
id FROM membres WHERE userid='$userid'";
$resultat=mysql_query($requete_sql,
$connect);
$membre=mysql_fetch_array($resultat);
//
insertion des informations en base de donnée:
$formuserpass=md5($formuserpass);
$insert_sql="REPLACE
INTO membres (id,userid,userpass[,usermail,...])
VALUES ('$membre[id]','$formuserid','$formuserpass'[,'$formusermail'...])";
$resultat=mysql_query($requete_sql,
$connect);
//
enregistrement des nouvelles variables de session:
$userid=$formuserid;session_register("userid");
//
etc...
//
redirection par exemple vers la home page:
$url="/index.php";
}
header("location: $url");
// redirection proprement dite
}
}
?>
// affichage du code HTML précédant
le formulaire
// affichage éventuel des
différentes erreurs, par exemple:
<?
if(count($error)){
echo "<font face=Verdana size=2 color=#CC0000><b>";
while($error){
// tant que le tableau n'est pas vide
echo
array_shift($error)."<br>";
// on le "dépile" par le haut
}
echo "</b></font>";
}else{ // s'il n'y a pas d'erreurs
?>
// formulaire:
<form action="/register.php"
method="POST">
// affichage des différents
champs de formulaires,
// EN RAPPATRIANT LES DONNEES DEJA SAISIES!
// par exemple:
<input type="text" name="formuserid"
value="<?echo ($modifier?$userid:$formuserid);?>">
// si modification de profil, on affiche
la variable globale $userid, sinon on affiche la variable
$formuserid
// etc...
<input type="hidden" name="validation"
value="1"> // caractérise
l'envoi de données
<input type="submit" value="OK">
</form>
<?
}
mysql_close($connect);
?>
// affichage du
code HTML suivant le formulaire
|
Quelques commentaires supplémentaires:
- on utilise la variable $modifier pour caractériser
la modification de profil (par rapport à l'inscription) plutôt
que de réécrire session_is_registered("userid")
à chaque fois.
- on distingue les variables globales de session ($userid...)
des variables locales de formulaires ($formuserid...), les
premières ne prenant les valeurs des secondes qu'en cas de
modification validée ou d'inscription réussie.
- lors du remplacement d'une ligne de base de données
par les nouvelles valeurs concernant le membre identifié,
il est nécessaire de récupérer la clé
primaire (ici nommée "id" de la table en
question "membres".
- dans l'affichage des valeurs de champ, nous utilisons l'instruction
(a?b:c) qui signifie "si a est vrai alors b sinon
c".
Il est bien évident que ce cadre doit être amélioré,
notamment au niveau de la sécurité et de la rigueur
de la validation. Il s'agit bien d'un point de départ permettant
de rapidement mettre en place son système de gestion de membres
et de personnalisation. En effet, une fois la session ouverte avec
les variables de session (caractéristiques du membre identifié)
enregistrées en son sein, il sera facile de reprendre des
informations du profil dans le cadre de la session. Par exemple,
si $useraddress est l'une des variables
globales enregistrées:
<?session_start();?>
// code HTML...
<?
if(session_is_registered("userid"){
echo "Votre adresse Monsieur ".$userid."
est la suivante: ".$useraddress;
}
?>
// code HTML...
Page
1 | 2
|