II- Transmettre des données sur une page

Slides:



Advertisements
Présentations similaires
Cours n°3 Les formulaires
Advertisements

Mettre en ligne des cartes.
QuickPlace de LOTUS Logiciel générateur de SITE WEB : Installé sur un serveur (grenet), Permet de créer / gérer / utiliser un site privé, De donner des.
La base de données de jurisprudence francophone.  Juricaf est composé de deux parties : - Le menu de gauche avec les différentes fonctions - La partie.
Informatiser une BCD Document sous licence libre Creative Commons by-sa réalisé par Cyrille Largillier – IEN Mée sur Seine – Dammarie les lysCreative Commons.
Les profils du SEDA confection de profil avec Agape.
Formation Utilisateur Nouveautés de la V3.2 de PRODIGE Eric Bleuzet Philippe Terme Catherine Chamard-Bois.
Cours de HTML suite 3. Sommaire...  Les formulaires. Les formulaires.  Structure basique du formulaire, balise. Structure basique du formulaire, balise.
Utilisation du logiciel EduStat © Distribution de fréquences simples Les compilations.
CREATION OU RECUPERATION D ’ UN IDENTIFIANT OU D ’ UN MOT DE PASSE DANS GABRIEL, ANGE 1D ET ANGE 2D Cette procédure s’applique dans les cas suivants :
Installation De Peakup.  Télécharger le fichier peakup2.4.0.free.zip  Décompresser le fichier extrait sur une Directory de votre choix  Créer un lient.
Interface sur laquelle on arrive lorsqu’on atteint le site Tous les champs ci- dessous sont supprimés Liste des clients disponibles Liste des serveurs.
AMUE – SIFAC Gestion des services fait sur SIFAC WEB
Ecran d’accueil Une fois le compte de votre entreprise créé et validé par notre service clients, vous recevrez par , un lien vous invitant à vous.
Quelques repères ergonomiques de la base élèves 1° degré
HTML.
Google analytics.
PLAN DU MODULE (35 heures)
Initiation aux bases de données et à la programmation événementielle
5.
Détection des erreurs.
Guide d’utilisation.
Programmation avec Scratch
Ajouter le code dans une page html
Initiation aux bases de données et à la programmation événementielle
8. Mettre les paramètres du test final
Javadoc et débogueur Semaine 03 Version A16.
Réalisation d'agents de surveillance Zephir
Création d’une sous rubrique
Asynchronous Javascript And Xml
ATTENTION À VOS COURRIELS
MS
5.
DREAMWEAVER Partie 2.
PHP – SESSIONS Aide mémoire
Formulaires HTML.
Création d’un formulaire
1ers pas des utilisateurs migrés
Concepts de base de la programmation
Documentation technique (Linux)
Création Et Modification De La Structure De La Base De Données
Présentation initiale
3- Nouvelles pages d’accueil
Package R Markdown: Un outil pour générer des pages html avec R Studio
Guide Utilisateur. Guide Utilisateur.
Gestion des fichiers Niv2
Introduction à Internet
Formation sur les bases de données relationnelles.
Gilles BADUFLE À partir d’un PPT modifié du C.A.H.M.
Programmation Android Première application Android
GUIDE DE L’UTILISATEUR DU VOLET WEB DU PROGICIEL EDC
Chapitre 2 Le Projet Poterie
Informatique de base Pr. Namar Ydriss Cours 1: Introduction
Informatique de base Pr. Namar Ydriss Cours 4: Formulaires
03- Evaluation Access 2003 Cette évaluation comporte des QCM (1 seule réponse) et des Zones à déterminer dans des copies d’écran.
Bonjour, Je suis votre guide pour cette visite de votre nouveau logiciel HDS. Je vais vous montrer comment préparer une note de frais.
Présentation générale
Logiciel de présentation
Les différents modes de démarrage de Windows
Exploitation de vos données
Support de formation Administrateur Entretiens
STSWEB Rattacher Services et ARE Gestion des pondérations
STS Web Services libres Gérer les services libres
Python Nicolas THIBAULT
DÉMATÉRIALISATION PARTIELLE DES LICENCES RIEN DE COMPLIQUÉ EN SOI….
STS Web Services libres Supprimer des services libres
Alimenter sa page perso automatiquement avec HAL
Tapez les détails de votre événement ici
App Inventor trucs Afficher une image depuis le Web ou Google Drive.
GUIDE DE PRISE EN MAIN FRONT OFFICE
Transcription de la présentation:

II- Transmettre des données sur une page PLAN DU MODULE I- Les bases de PHP II- Transmettre des données sur une page III- Stocker des informations dans une base de données IV- Utilisation avancée de PHP V- Évaluation

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page I- ANALYSE DU BESOIN / Plan Transmettre des données avec l'URL Récupérer les paramètres en PHP Ne faites jamais confiance aux données reçues ! Transmettre des données avec les formulaires Ne faites JAMAIS confiance aux données reçues ! TP : page protégée par mot de passe

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 1. Transmettre des données avec l'URL I- ANALYSE DU BESOIN / Plan URL : Uniform Resource Locator Représenter une adresse sur le web Exemple : http://www.siteduzero.com Exemple : http://www.google.fr/search?rlz=1C1GFR343&q=siteduzero Dans cet exemple, les informations après le point d'interrogation sont des données que l'on fait transiter d'une page à une autre.

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 1. Transmettre des données avec l'URL I- ANALYSE DU BESOIN / Plan Envoyer des paramètres dans l'URL Le point d'interrogation sépare le nom de la page PHP des paramètres. Ensuite, ces derniers s'enchaînent selon la forme nom=valeur et sont séparés les uns des autres par le symbole &. La seule limite est la longueur de l'URL. En général il n'est pas conseillé de dépasser les 256 caractères

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 1. Transmettre des données avec l'URL I- ANALYSE DU BESOIN / Plan Créer un lien avec des paramètres Nous avons 2 fichiers dans notre site index.php (l'accueil) bonjour.php Nous voulons faire un lien de index.php qui mène à bonjour.php et qui lui transmet des informations dans l'URL, comme le schématise la figure suivante.

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 1. Transmettre des données avec l'URL I- ANALYSE DU BESOIN / Plan Créer un lien avec des paramètres Index.php Ce lien appelle la page bonjour.php et lui envoie deux paramètres : nom : Dupont prenom : Jean <a href="bonjour.php?nom=Dupont&prenom=Jean">Dis-moi bonjour !</a>

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 2. Récupérer les paramètres en PHP I- ANALYSE DU BESOIN / Plan La page qui réceptionne les paramètres : bonjour.php Celle-ci va automatiquement créer un array associatif $_GET Les clés correspondent aux noms des paramètres envoyés en URL Le lien vers bonjour.php?nom=Dupont&prenom=Jean, signifie que que nous aurons accès aux variables suivantes : On peut donc récupérer ces informations, les traiter, les afficher, bref faire ce que l'on veut avec.

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 2. Récupérer les paramètres en PHP I- ANALYSE DU BESOIN / Plan Affichage des données dans bonjour.php <p>Bonjour <?php echo $_GET['prenom'] . ' ' . $_GET['nom']; ?> !</p>

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 3. Ne faites JAMAIS confiance aux données reçues ! I- ANALYSE DU BESOIN / Plan Avoir conscience des dangers et des failles de sécurité Risque de mettre en péril le site web Avoir conscience des problèmes que vous pourrez rencontrer lorsque vous recevrez des paramètres de l'utilisateur

Tous les visiteurs peuvent trafiquer les URL ! CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 3. Ne faites JAMAIS confiance aux données reçues ! I- ANALYSE DU BESOIN / Plan http://localhost/tests/bonjour.php?nom=Dupont&prenom=Jean Tous les visiteurs peuvent trafiquer les URL !

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 3. Ne faites JAMAIS confiance aux données reçues ! I- ANALYSE DU BESOIN / Plan Tester la présence d'un paramètre http://localhost/tests/bonjour.php On a essayé d'afficher la valeur de $_GET['prenom'] et celle de $_GET['nom']. Mais comme on vient de les supprimer de l'URL, ces variables n'ont pas été créées et donc elles n'existent pas ! PHP nous avertit qu'on essaie d'utiliser des variables qui n'existent pas, d'où les « Undefined index » Pour résoudre ce problème, on peut faire appel à une fonction un peu spéciale : isset(). Cette fonction teste si une variable existe. Nous allons nous en servir pour afficher un message spécifique si le nom ou le prénom sont absents.

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 3. Ne faites JAMAIS confiance aux données reçues ! I- ANALYSE DU BESOIN / Plan . Que fait ce code ? Il teste si les variables $_GET['prenom'] et $_GET['nom'] existent. Si elles existent, on dit bonjour au visiteur. S'il nous manque une des variables (ou les deux), on affiche un message d'erreur : « Il faut renseigner un nom et un prénom ! ». <?php if (isset($_GET['prenom']) AND isset($_GET['nom'])) { echo 'Bonjour ' . $_GET['prenom'] . ' ' . $_GET['nom'] . ' !'; } else echo 'Il faut renseigner un nom et un prénom !'; ?>

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 3. Ne faites JAMAIS confiance aux données reçues ! I- ANALYSE DU BESOIN / Plan Contrôler la valeur des paramètres bonjour.php?nom=Dupont&prenom=Jean&repeter=8 Le paramètre repeter définit le nombre de fois que l'on dit « bonjour » sur la page bonjour.php?nom=Dupont&prenom=Jean&repeter=1984986545665156 bonjour.php?nom=Dupont&prenom=Jean&repeter=chien <?php if (isset($_GET['prenom']) AND isset($_GET['nom']) AND isset($_GET['repeter'])) { for ($i = 0 ; $i < $_GET['repeter'] ; $i++) echo 'Bonjour ' . $_GET['prenom'] . ' ' . $_GET['nom'] . ' !<br />'; } else echo 'Il faut renseigner un nom, un prénom et un nombre de répétitions !'; ?>

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 3. Ne faites JAMAIS confiance aux données reçues ! I- ANALYSE DU BESOIN / Plan Voici ce qu'il faut anticiper Le cas où le nombre qu'on vous envoie n'est pas une valeur raisonnable. Le cas où la valeur n'est pas logique, où elle n'est pas du tout ce qu'on attendait Pour résoudre ces problèmes, on doit vérifier que repeter contient bien un nombre : Forcer la conversion de la variable en type entier (int) (transtypage) <?php $_GET['repeter'] = (int) $_GET['repeter']; ?>

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 3. Ne faites JAMAIS confiance aux données reçues ! I- ANALYSE DU BESOIN / Plan <?php if (isset($_GET['prenom']) AND isset($_GET['nom']) AND isset($_GET['repeter'])) { // 1 : On force la conversion en nombre entier $_GET['repeter'] = (int) $_GET['repeter']; // 2 : Le nombre doit être compris entre 1 et 100 if ($_GET['repeter'] >= 1 AND $_GET['repeter'] <= 100) for ($i = 0 ; $i < $_GET['repeter'] ; $i++) echo 'Bonjour ' . $_GET['prenom'] . ' ' . $_GET['nom'] . ' !<br />'; } else echo 'Il faut renseigner un nom, un prénom et un nombre de répétitions !'; ?>

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 4. Transmettre des données avec les formulaires I- ANALYSE DU BESOIN / Plan Les formulaires constituent le principal moyen pour vos visiteurs d'entrer des informations sur votre site. Les formulaires permettent de créer une interactivité. Créer la base du formulaire La méthode (method) get : les données transiteront par l'URL post : les données ne transiteront pas par l'URL, l'utilisateur ne les verra donc pas passer dans la barre d'adresse. La cible L'attribut action sert à définir la page appelée par le formulaire. <form method="post" action="cible.php"> <p> On insèrera ici les éléments de notre formulaire. </p> </form>

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 4. Transmettre des données avec les formulaires I- ANALYSE DU BESOIN / Plan Dans cet exemple, le formulaire se trouve dans la page formulaire.php. Cette page ne fait aucun traitement particulier, mais une fois le formulaire envoyé (lorsqu'on a cliqué sur le bouton « Valider »), le visiteur est redirigé vers la page cible.php qui reçoit les données du formulaire, comme le montre la figure suivante. Le nom de la page cible est défini grâce à l'attribut action.

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 4. Transmettre des données avec les formulaires I- ANALYSE DU BESOIN / Plan Les éléments du formulaire : Les petites zones de texte Pour les mots de passe, vous pouvez utiliser type="password" Il y a deux attributs à connaître que l'on peut ajouter à cette balise. name (obligatoire) : c'est le nom de la zone de texte. value (facultatif) : c'est ce que contient la zone de texte au départ. Le texte que le visiteur aura entré sera disponible dans cible.php sous la forme d'une variable appelée $_POST['pseudo']. créer un formulaire qui demande le prénom du visiteur puis qui l'affiche fièrement sur la page cible.php. On va donc distinguer deux codes source : celui de la page du formulaire formulaire.php et celui de la page cible. <input type="text" /> <input type="text" name="pseudo" value="M@teo21" />.

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 4. Transmettre des données avec les formulaires I- ANALYSE DU BESOIN / Plan Les éléments du formulaire : Les petites zones de texte formulaire.php le champ <input type="submit" /> permet de créer le bouton de validation du formulaire cible.php <form action="cible.php" method="post"> <input type="text" name="prenom" /> <input type="submit" value="Valider" /> </form> <p>Bonjour !</p> <p>Je sais comment tu t'appelles, hé hé. Tu t'appelles <?php echo $_POST['prenom']; ?> !</p> <p>Si tu veux changer de prénom, <a href="formulaire.php">clique ici</a> pour revenir à la page formulaire.php.</p>

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 4. Transmettre des données avec les formulaires I- ANALYSE DU BESOIN / Plan Les éléments du formulaire : Les grandes zones de texte Il y a 3 attributs à connaître que l'on peut ajouter à cette balise. name (obligatoire) : c'est le nom de la zone de texte. rows (facultatif)  : définir la taille de la zone de texte en largeur Cols (facultatif) : définir la taille de la zone de texte en hauteur . <textarea name="message" rows="8" cols="45"> Votre message ici. </textarea>

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 4. Transmettre des données avec les formulaires I- ANALYSE DU BESOIN / Plan Les éléments du formulaire : La liste déroulante On utilise la balise <select> à laquelle on donne un nom La variable $_POST['choix'] sera créée, et elle contiendra le choix qu'a fait l'utilisateur. S'il a choisi « Choix 3 », la variable $_POST['choix'] sera égale au value correspondant, c'est-à-dire choix3. L'attribut selected="selected" à une balise <option>,sera le choix par défaut. <select name="choix"> <option value="choix1">Choix 1</option> <option value="choix2">Choix 2</option> <option value="choix3">Choix 3</option> <option value="choix4">Choix 4</option> </select>

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 4. Transmettre des données avec les formulaires I- ANALYSE DU BESOIN / Plan Les éléments du formulaire : Les cases à cocher La variable $_POST['case'] sera créée Si la case a été cochée, alors $_POST['case'] aura pour valeur true. Si elle n'a pas été cochée, alors $_POST['case'] n'existera pas. Vous pouvez faire un test avec isset($_POST['case']) pour vérifier si la case a été cochée ou non. Si vous voulez que la case soit cochée par défaut, il faudra lui rajouter l'attribut checked="checked". <input type="checkbox" name="case" />

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 4. Transmettre des données avec les formulaires I- ANALYSE DU BESOIN / Plan Les éléments du formulaire : Les boutons d'option les deux boutons d'option ont le même nom (« frites ») Dans la page cible, une variable $_POST['frites'] sera créée. Elle aura la valeur du bouton d'option choisi par le visiteur Pour pré-cocher l'un de ces boutons, faites comme pour les cases à cocher : rajoutez un attribut checked="checked" Aimez-vous les frites ? <input type="radio" name="frites" value="oui" id="oui" checked="checked" /> <label for="oui">Oui</label> <input type="radio" name="frites" value="non" id="non" /> <label for="non">Non</label>

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 4. Transmettre des données avec les formulaires I- ANALYSE DU BESOIN / Plan Les éléments du formulaire : Les champs cachés À l'écran, sur la page web on ne verra rien. Mais dans la page cible, une variable $_POST['pseudo'] sera créée, et elle aura la valeur « Mateo21 » ! <input type="hidden" name="pseudo" value="Mateo21" />

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 5. Ne faites jamais confiance aux données reçues I- ANALYSE DU BESOIN / Plan <form method="post" action="http://www.monsite.com/cible.php">

I- ANALYSE DU BESOIN / Plan CRWD UC2.2 Développement côté serveur II- Transmettre des données de page en page 5. Ne faites jamais confiance aux données reçues I- ANALYSE DU BESOIN / Plan La faille XSS : attention au code HTML que vous recevez ! Éviter la faille XSS en échappant le HTML utiliser la fonction htmlspecialchars qui va transformer les chevrons des balises HTML <> en < et > respectivement. Cela provoquera l'affichage de la balise plutôt que son exécution. Retirer les balises HTML que le visiteur a tenté d'envoyer plutôt que de les afficher, utilisez la fonction strip_tags