|
 Barette DDR2 Kingston 2 GB mémoire
Prix: 56.43 € TTC |  Mémoire DDR Kingston 1 GB PC3200
Prix: 36.38 € TTC |  Mémoire DDR2 2 GH 667 Mhz Kingston
Prix: 52.94 € TTC |  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.
-
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.
-
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.
La première partie va créer le formulaire en HTM
(inséré dans 1 fichier php) reprenant les différents champs à créer:
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> |
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.
-
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.
-
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.
Une fois les données envoyées avec le bouton OK, le
fichier suivant que nous appellerons mail.php par facilité va:
-
Récupérer les données (si elles existent)
-
Vérifier les informations obligatoires et la
taille des informations transmises
-
Transmettre un message d'erreur en cas de
données non valides
-
Vérifier si l'adresse mail et le nom
d'utilisateur n'existent pas déjà dans la table "member"
-
Transmettre un message d'erreur en cas de
duplicate
-
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:
| 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 |
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'].
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;
}
?> |
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.
|