YBET Rue Albert 1er, 7 6810 Pin - Chiny Route Arlon - Florenville (/fax: 061/32.00.15 |
|
YBET informatique | Créer son site |
1. Création du formulaire - 2. Méthode Post - Get - 3. Traitement de l'information - 4. Récupération des données - 5. Vérification des données - 6. Vérification de l'adresse mail.
Maintenant que nous avons créé la table utilisateur MySQL, nous allons créer le formulaire et envoyer les données vers la base de donnée du site Internet. Deux méthodes sont utilisables avec leurs avantages et leurs défauts.
Par facilité dans ce cours, nous utilisons ici la méthode HTML. L'autre méthode sera utilisée plus tard.
La première partie va créer le formulaire en HTM (inséré dans 1 fichier php) reprenant les différents champs à créer:
Nom d'utilisateur (*) Mot de passe (*) (minimum 5 caractères) Adresse mail (*) Titre Nom (*) Prénom (*) Code Postal Ville (*) (minimum 3 caractères) Pays (*) Téléphone Date de naissance: Jour mois Année Remarque, ce formulaire n'envoie aucune données |
Les champs uid (numéro d'utilisateur), type (utilisateur, administrateur, ...) et regdate (date d'inscription) ne sont pas reprises dans le formulaire, elle seront insérées automatiquement en PHP. Ce formulaire peut éventuellement être créer par FrontPage (ce qui est plus facile). Voici le code HTML
Deux méthodes sont utilisée pour transférer un message, la méthode POST et la méthode GET. GET est la méthode par défaut.
La méthode GET ne permet que de transférer quelques octets, la méthode post permet d'envoyer des variables de grande taille.
La méthode de réception des données est également différente.
Pour savoir si les données sont transmises, il suffit de vérifier si des valeurs sont incluses dans la variable tableau.
$_GET['nom-variable']='valeur-variable'
est équivalent à
$_POST['nom-variable']='valeur-variable'
Pour ce formulaire, nous utiliserons POST. Elle se retrouve dans l'en-tête du formulaire: <form method="POST" action="mail.php" name="creer-utilisateur"> qui demande envoie le résultat au fichier mail.php avec comme titre (optionnel) creer-utilisateur.
Une fois les données envoyées avec le bouton OK, le fichier suivant que nous appellerons mail.php par facilité va:
Chaque variable de notre formulaire va correspondre à une variable php. Par facilité, nous allons faire correspondre le nom du champ (titre par exemple) avec le même nom de variable PHP ($titre).
Les vérifications à effectuer sont:
Nom | Variable PHP | Valeur nulle autorisée | valeur minimum, maximum |
titre | $titre | Non | Liste: Monsieur, Madame, Mademoiselle. (Cette partie est faite par le formulaire) |
nom | $nom | Non | 3,25 |
prenom | $prenom | Non | 3,25 |
codepostal | $codepostal | Oui | 4,10 |
ville | $ville | Oui | 3,25 |
pays | $pays | Non | 3,20 |
telephone | $telephone | Non | 8,20 |
Non | 8,60, caractère @, serveur mail | ||
username | $username | Non | 2,25 |
password | $password | Non | 5,40 |
bday | $bday | Oui | chiffre entre 1 et 31 |
bmonth | $bmonth | Oui | chiffre entre 1 et 12 |
byear | $byear | Oui | chiffre entre 1900 et 2050 |
L'ensemble des variables vont être récupérées dans notre fichier mail.php par la commande $_POST, soit
<?php $titre=$_POST['titre']; echo $titre; ?> |
Mais est-ce nécessaire. Finalement nous pouvons directement utiliser le résultat de la variable tableau $_POST['nom-variable'].
La première partie va vérifier le nombre de caractères des champs. Pour cela, nous allons créer une fonction comme vu au chapitre 4 de ce cours en ligne. Ceci va éviter de longues lignes de codes.
function taille_variable($variable,$taille_min=0,$taille_max=0){ global $_POST; if(!isset($_POST[$variable])){ // valeur non définie return false; }elseif (strlen($_POST[$variable])<$taille_min){ return False; }elseif(strlen($_POST[$variable])>$taille_max){ return FALSE; } return True; } |
Analysons cette fonction.
Certains champ sont optionnels. Par contre, si une valeur est rentrée, nous devons vérifier si les informations de taille sont correctes. Remarquez que dans ce cas, nous utilisons une nouvelle fonction if. Certaines versions PHP n'acceptent pas l'imbrications de fonctions IF.
if (strlen($_POST['codepost'])<>0){ if(!taille_variable('codepost',4,10)){ echo 'Code Postal invalide, entre 4 et 10 caractères'; echo'<br>'; } } |
Au total, si le contenu est correct, la valeur renvoyée est TRUE, False sinon. Nous aurions pu utiliser checkdate ( int mois, int jour, int année ) pour la vérification de la date de naissance. La partie complète de vérification de la taille devient:
<?php if(!taille_variable('username',2,25)){ echo'Login invalide, rentrez minimum 2 caractères'; echo'<br>'; }elseif (!taille_variable('password',5,40)){ echo'Mot de passe invalide, rentrez minimum 5 caractères, 40 caractères maximum'; echo'<br>'; }elseif (!taille_variable('email',8,60)){ echo'email invalide, rentrez minimum 8 caractères'; echo'<br>'; }elseif(!taille_variable('nom',3,25)){ echo'Nom invalide, rentrez votre nom (minimum 3 lettres)'; echo'<br>'; }elseif (!taille_variable('prenom',3,25)){ echo'Prénom invalide, rentrez votre nom'; echo'<br>'; } } if (strlen(_POST['codepost'])<>0){ if(!taille_variable('codepost',4,10)){ echo'Code Postal invalide, entre 4 et 10 caractères'; echo'<br>'; } } if (!taille_variable('ville',3,25)){ echo'Ville invalide, rentrez minimum 3 caractères'; echo'<br>'; }elseif (!taille_variable('pays',3,20)){ echo'Pays invalide, rentrez minimum 3 caractères'; echo'<br>'; }elseif (strlen($_POST['telephone'])<>0){ if (!taille_variable('telephone',5,20)){ echo'Numéro de téléphone non valide'; echo'<br>'; } } if (strlen($_POST['bday'])<>0){ if (!taille_variable('bday',1,2)){ echo'Jour de naissance invalide, rentrez 2 chiffres'; echo'<br>'; }if (($_POST['bday'])<"1"){ echo'Jour inférieur à 1'; echo'<br>'; }elseif (($_POST['bday'])>"31"){ echo'Jour supérieur à 31'; echo'<br>'; } } if (strlen($_POST['bmonth'])<>0){ if (!taille_variable('bmonth',2,2)){ echo'Mois de naissance invalide, rentrez 2 chiffres'; echo'<br>'; } if ($_POST['bmonth']<1){ echo'Mois de naissance >0'; echo'<br>'; }elseif ($_POST['bmonth']>12){ echo'Mois de naissance <12'; echo'<br>'; } } if (strlen($_POST['byear'])<>0){ if (!taille_variable('byear',2,2)){ echo'Année de naissance invalide, rentrez 2 chiffres'; echo'<br>'; } if ($_POST['byear']<1900){ echo'Année de naissance >1900'; echo'<br>'; }elseif ($_POST['byear']>2020){ echo'Année de naissance <2020'; echo'<br>'; } } ?> <p>Recommencez, revenez en arrière avec votre navigateur</a></p> <?php function taille_variable($variable,$taille_min=0,$taille_max=0){ global $_POST; if(!isset($_POST[$variable])){ // valeur non définie return false; }elseif (strlen($_POST[$variable])<$taille_min){ return False; }elseif(strlen($_POST[$variable])>$taille_max){ return FALSE; } return True; } ?> |
Il nous faut encore corriger certaines parties, notamment au niveau de l'adresse mail où nous ne vérifions que la taille. Deux vérifications sont possibles: le caractères @ doit être inclut dans l'adresse, nous pouvons également vérifier si le DNS accepte les mails.
La vérification du caractère @ dans la chaîne mail va utiliser la fonction strpos() que nous avons vu au chapitre 6 de cette formation. Comme rappel
STRPOS($variable,$variable1): revoie le nombre de caractère devant la lettre $variable1. Exemple: STRPOS ("YBET informatique,"i") renvoie le nombre 5. Si la réponse est false, le caractère n'est pas trouvé dans la chaîne.
if (!strpos($_POST['email'],'@')){ echo 'Adresse mail non valide'; // vérifie si le caractère @ est
inclus dans la chaîne |
Nous aurions également pu vérifier la position du caractère dans la chaîne. En premier, l'adresse mail n'est pas valide, moins de 5 positions avant la fin de la chaîne est également une adresse de messagerie invalide (exemple: ybet@a.b n'est pas valide puisque les nom de domaine incluent minimum 2 caractères pour l'extension, le point plus au moins 1 lettre de nom de domaine).
Nous allons simplement interroger le serveur. Pour accepter des adresses mails, le serveur DNS doit être configurer spécifiquement. Ceci n'est pas réellement une preuve que l'adresse de messagerie est effectivement valide, le nom utilisateur peut être faux avec un serveur valide.
Cette vérification se fait en 2 parties: la récupération du nom de domaine et l'envoi de la vérification au serveur. Commençons par récupérer le nom utilisateur et le nom de domaine par la fonction PHP explode(). Cette fonction renvoie les 2 valeurs dans un tableau. Nous allons également utiliser la fonction list pour récupérer les 2 valeurs sous forme de variable.
La fonction de récupération devient list($user,$dns)=explode("@",$_POST['email']
checkdnsrr($dns) renvoie true si le nom de domaine est configuré, false sinon. Cette fonction n'est pas normalement pas utilisable sous windows. Vous ne pourrez donc pas la tester directement avec EasyPhp.
If (!checkdnsrr($dns)){
echo'L\'adresse mail n'est pas valide';
}
Au total:
list($user,$dns)=explode("@",$_POST['email'] If (!checkdnsrr($dns)){ echo'L\'adresse mail n'est pas valide'; } |
Le codage complet de la procédure devient.
Cette partie ne fait que vérifier si les données rentrées dans le formulaire sont correctes. Le chapitre suivant va rentrer les données dans la base MySql si les données sont correctes.
Sur le sujet:
> 15. Insertion des coordonnées utilisateurs |
<13 . Création des tables pour le développement d'annonces. |