Formations privées

Rue Albert 1er, 7

6810 Pin - Chiny

(/fax: 061/32.00.15

Formation PHP - MySql en ligne

Formation Webmaster

Formation: apprenez à créer et référencer votre propre site Internet

FORMATIONS

Le MAGASIN YBET

PRODUITS et SERVICES

Formations informatiques privées

Activités et présentation

Logiciels de gestion

Access - Excel

Rayon d'action  

Ciel Compta
YBET informatique Forum Création de site Vente informatique en ligne
DDR2-800 2GB
Barette DDR2 Kingston 2 GB mémoire


Prix: 56.43 € TTC
DDR 1GB, 400 MHZ (PC
Mémoire DDR Kingston 1 GB PC3200


Prix: 36.38 € TTC
DDR2-667 2 GB
Mémoire DDR2 2 GH 667 Mhz Kingston


Prix: 52.94 € TTC
DDR 512 MB, MEMOIRE
Mémoire DDR Kingston 512 MB PC3200


Prix: 23.63 € TTC
Les chapitres de la formation en ligne PHP - MySQL
1. Introduction au Php
2. Installer et utiliser easyphp
3. Première commande PHP
4. Fonctions en PHP
5. Les tableaux
6. Fonctions sur les variables
7. Formulaires Mail
8. Base de donnée MySQL avec easyphp
9. Première application de Mysql
10. Gestion des tables par PHP
10.a Exercice: formulaire de contact
11. Mise en page PHP - HTM: include() - require()
12. Création automatique de la table utilisateur
13. Formulaire et vérification des données
14. Insertion des nouveaux membres
15. Gestion des catégories
16. Liste de choix déroulante
17. Modification des tables MySQL
18. Enregistrer un fichier via un formulaire
19. Formulaire d'insertion
20. Affichage des petites annonces
21. Filtrage des annonces (1)
23. Exercice: gérer des news
24. Utilisation des Cookies
25. Gestion fichiers et Dossiers (source et FTP)
26. Cryptage et décryptage de mots de passe
27. Base relationnelle, méthodes Left et Join.
Divers
Référencer son site Internet, positionnez votre site sur Google, MSN, Yahoo, ... avec cette formation en ligne
Les feuilles de styles, utilisation du CSS.
FrontPage et l'HTML, cours en ligne
Le fichier Apache .htaccess, configuration serveur, URL Rewriting, accès répertoires.
Débuter en Javascript, un aperçu des possibilités de ce langages coté client.
Exemples de programmation qui utilisent de ces notes de cours

Inscription des utilisateurs, le Luxembourg belge: intégration des annonces, agenda, annuaire régional, découverte de la région, administration, ...

14.13. Premier formulaire d'entrée des petites annonces

1 Introduction - 2. Création du formulaire - 3. Méthode Post - Get - 4. Traitement de l'information - 5. Récupération des données - 6. Vérification des données - 7. Vérification de l'adresse mail.

Maintenant que nous avons créé la table utilisateur MySQ, nous allons créer le formulaire et envoyer les données vers la base de donnée. Deux méthodes sont utilisables avec leurs avantages et leurs défauts.

  1. La première méthode utilise un formulaire en HTML et un autre fichier en PHP qui vérifie les données. C'est la méthode la plus simple. Par contre, en cas de données incorrectes, elle nécessite que l'utilisateur reviennent en arrière avec le navigateur pour corriger.
  2. La deuxième méthode utilise un seul fichier PHP qui insère et vérifie les données (comme dans l'exercice précédant). On appelle de type de formulaire auto-invocant.

Par facilité dans ce cours, nous utilisons ici la méthode HTML. L'autre méthode sera utilisée plus tard.

2. Création du formulaire

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 (*)

Adresse (minimum 5 caractères)

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), mais voici le codage en html.

<form method="POST" action="mail.php" name="creer-utilisateur">

<p>Nom d'utilisateur (*) <input type="text" name="username" size="25"></p>

<p>Mot de passe (*) <input type="password" name="password" size="40"> (minimum 5 caractères)</p>

<p>Adresse mail (*) <input type="text" name="email" size="60"></p>

<p>Titre <select size="1" name="titre">

<option selected>Monsieur</option>

<option>Madame</option>

<option>Mademoiselle</option>

</select></p>

<p>Nom (*) <input type="text" name="nom" size="25"> Prénom (*) <input type="text" name="prenom" size="25"></p>

<p>Code Postal <input type="text" name="codepost" size="10"> Ville (*) <input type="text" name="ville" size="25"> (minimum 3 caractères)</p>

<p>Pays (*) <input type="text" name="pays" size="20"></p>

<p>Téléphone <input type="text" name="telephone" size="20"></p>

<p>Date de naissance: Jour <input type="text" name="bday" size="2"> mois <input type="text" name="bmonth" size="2">

Année <input type="text" name="byear" size="4"></p>

<p> <p> <input type="submit" name="ok" value="Envoyer" /></p>

</form>

3. Méthode POST et GET

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.

  1. GET envoie les informations via l'URL comme: http://www.ybet.be/mail.php?ok=envoyer&titre='Monsieur'
    Toutes les variables sont reprises dans l'URL comme nom-variable=valeur. C'est un avantage en sites dynamiques au niveau référencement des différentes pages dans les moteurs de recherche.

  2. POST par contre n'utilise par l'URL fait passer les informations via l'en-tête HTTP , en même temps que les informations de navigation (adresse IP, version navigateur, résolution écran, ...). Cette méthode est donc plus sécurisée.

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. 

  • $_GET (PHP4 compris) rassemble les données transmises par la méthode GET (dans les versions 4 et inférieures, on utilisait HTTP_GET_VARS)
  • $_POST (PHP4 compris) récupère les données par la méthode POST (PHP 4 et inférieures: HTTP_POST_VARS)

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'

Dans cette formation, 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.

4. Traitement de l'information.

Une fois les données envoyées avec le bouton OK, le fichier suivant que nous appellerons mail.php par facilité va:

  1. Récupérer les données (si elles existent)

  2. Vérifier les informations obligatoires et la taille des informations transmises

  3. Transmettre un message d'erreur en cas de données non valides

  4. Vérifier si l'adresse mail et le nom d'utilisateur n'existent pas déjà dans la table "member"

  5. Transmettre un message d'erreur en cas de duplicate

  6. Si l'ensemble est correct, le fichier va transmettre les données dans la table "member"

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:

  • Champs obligatoires

  • Longueur minimum et maximum des champs.

  • Vérification d'une adresse mail valide. 

Nom Variable PHP correspondante 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
email $email 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

5. Récupération des données.

L'ensemble des variables vont être récupérées dans notre fichier mail.php par la commande HTTP_POST_VARS, 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'].

6. Vérification des données

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.

  • La première partie demande 3 arguments: le nom de la variable, la taille minimum et la taille maximum. En ajoutant une valeur pour les paramètres maximum et minimum, nous donnons une valeur par défaut si ces 2 variables ne sont pas transmises à la fonction.
  • La deuxième ligne global $_POST; déclare la variable. C'est nécessaire pour toutes fonctions. Par contre, une fois ouverte dans une fonction, elle est accessible pour l'ensemble de script.
  • La suite utilise la fonction STRLEN() qui vérifie le nombre de caractères. Nous l'avons déjà étudiée au chapitre 6.

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. 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;
}
?>

7. Vérifier l'adresse Mail.

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';

}

L'ensemble de la procédure 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>';
}
if (!strpos($_POST['email'],'@')){
   echo'Adresse mail non valide';
}
list($user,$dns)=explode("@",$_POST['email']);
If (!checkdnsrr($dns)){
  echo'L\'adresse mail n\'est pas valide';
}

if(!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;
}
?>

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.

Créer son site Internet

Quelques remarques préliminaires concernant l'hébergement, langages de programmation, ...

Le Web 2.0

Le site developpements.org propose des tutoriaux sur le Web 2.0, les langages de programmation Internet, ...

Formulaires et javascript

En complément, le Javascript peut aussi être utilisé dans les formulaires comme pour des calculs automatiques.


> 14. Insertion des données utilisateurs

<12 . Création automatique d'une Table Mysql en PHP.

YBET Informatique: formation débutant ou avancé

dans notre salle de formation ou en entreprise

Renseignements, tarifs et inscriptions sur notre page formations informatiques

Magasin Informatique YBET à Chiny

Autre formations en ligne:

Access - Excel - PowerPoint - Word - Internet - Quelques notes de la formation Ciel Comptabilité