Pages Web statiques. LIF4 - Initiation aux Bases de données : PHP. Pages Web dynamiques. Illustration. Illustration



Documents pareils
Programmation Web. Madalina Croitoru IUT Montpellier

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Pratique et administration des systèmes

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

PHP 4 PARTIE : BASE DE DONNEES

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

CREATION WEB DYNAMIQUE

SYSTÈMES D INFORMATIONS

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

PHP 5. La base de données MySql. A. Belaïd 1

A QUOI SERVENT LES BASES DE DONNÉES?

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

STAGE IREM 0- Premiers pas en Python

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Stockage du fichier dans une table mysql:

Module BD et sites WEB

Bases de données et sites WEB

Application web de gestion de comptes en banques

HTML. Notions générales

Etude et développement d un moteur de recherche

Mysql. Les requêtes préparées Prepared statements

Mysql avec EasyPhp. 1 er mars 2006

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Formation Webmaster : Création de site Web Initiation + Approfondissement

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Développement des Systèmes d Information

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Java DataBaseConnectivity

1 Introduction et installation

Devenez un véritable développeur web en 3 mois!

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Attaques applicatives

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

Compte Rendu d intégration d application

S y m M a i l i n g. S o l u t i o n d e - m a i l i n g. SymMailing est un outil professionnel de création et de gestion de campagnes d ing.

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Utiliser le portail d accès distant Pour les personnels de l université LYON1

Guide d utilisation. Version 1.1

Bases de données élémentaires Maude Manouvrier

Publier dans la Base Documentaire

Environnements informatiques

Algorithmique et Programmation, IMA

Vulnérabilités et sécurisation des applications Web

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Exonet : sauvegarde automatisée d une base de données

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Vulnérabilités et solutions de sécurisation des applications Web

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

Formation. Module WEB 4.1. Support de cours

Cours Base de données relationnelles. M. Boughanem, IUP STRI

MAILING KOMPOZER... 2 CREEZ UNE PAGE... 2 FORMAT DE LA PAGE... 2 AJOUTER DU TEXTE SUR UNE PAGE... 4

Performance web. Mesurer. Analyser. Optimiser. Benjamin Lampérier - Benoît Goyheneche. RMLL Beauvais. 8 Juillet 2015

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

SQL MAP. Etude d un logiciel SQL Injection

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Programmation Internet Cours 4

RÉALISATION D UN SITE DE RENCONTRE

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Partager rapidement un fichier volumineux

TP1 - Prise en main de l environnement Unix.

Java Licence Professionnelle CISII,

les techniques d'extraction, les formulaires et intégration dans un site WEB

1 Position du problème

Bases de Données et Internet

TP JAVASCRIPT OMI4 TP5 SRC

Notes pour l utilisation d Expression Web

< Atelier 1 /> Démarrer une application web

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

COURS DE MS EXCEL 2010

Créer le schéma relationnel d une base de données ACCESS

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Prise en main rapide

BES WEBDEVELOPER ACTIVITÉ RÔLE

Cours CCNA 1. Exercices

Création et utilisation de formulaire pdf

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Chapitre 5 : Les procédures stockées PL/SQL

Hébergement de site web Damien Nouvel

Authentification et contrôle d'accès dans les applications web

Transcription:

statiques LIF4 - Initiation aux Bases de données : E.Coquery emmanuel.coquery@liris.cnrs.fr http ://liris.cnrs.fr/ ecoquery Principe de fonctionnement : L utilisateur demande l accès à une page Web depuis son navigateur. Adresse tapée, clic sur un lien, utilisation d un signet, etc... Le navigateur envoie une demande à un serveur Web. Le serveur Web lit le fichier demandé sur le disque dur. Le serveur Web envoie le contenu du fichier au navigateur. Le navigateur affiche le contenu de la page. Pour l affichage, il peut également demander le contenu d autres fichier au serveur (ex : images). Illustration dynamiques Poste client Serveur Serveur Web Pages statiques : Pour changer le contenu, il faut éditer le fichier. Navigateur Web (1): demande "index.html" (4): contenu de index.html (3): contenu de index.html (2): accès à "index.html" Disque Idée : générer le contenu de la page au moment où elle est demandée, en fonction : du contenu d une base de données ; de paramètres fournis avec la demande (ex : formulaires). Dynamiques : fonctionnement Illustration L utilisateur demande l accès à une page Web depuis son navigateur. Le navigateur transmet envoie une demande au serveur web comprenant : le nom de la page, qui correspond en fait à un programme ; éventuellement un ensemble de paramètres. Le serveur web va chercher sur le disque le code source d un programme. Le serveur web exécute ce programme qui peut : utiliser les paramètres transmis avec la demande du navigateur ; aller chercher des données dans une base de données ou sur le disque. Durant l exécution, le programme génère un contenu. Le contenu est envoyé au navigateur. Le navigateur affiche le résultat. Poste client Navigateur Web (5): contenu (1): demande "index.php" + paramètres (2): accès à "index.php" (4): génération du contenu (4.1): requêtes et résultats Serveur Serveur Serveur Web SGBD Module Disque (3): code source de index.php

Quelques langages Langages utilisés : Pour le contenu des pages : Données à afficher Mise en forme (+ CSS, JavaScript,...) Pour générer le contenu des page : Aller chercher les données Fabriquer un document (en général un document ) (ou bien Perl, Python, Java,...) Pour interroger la base : Requêtes à effectuer sur la base. SQL Création de pages dynamiques Dans notre cadre, pour créer une page dynamique, il faut : Créer un programme correspondant à cette page. Plus précisément, écrire le code source de ce programme. Le but de ce programme est de générer le contenu d une page Web, i.e. du. Cette génération se fait via des print, un peu comme pour écrire dans un fichier. Ce programme peut éventuellement utiliser des requêtes SQL. Ces requêtes sont passées sous forme de chaînes de caractères à des fonctions spéciales qui vont les transmettre au SGBD et récupérer les résultats. Remarque : Bien que le but principal d un programme soit de produire un page, cela reste un programme qui peut par conséquent avoir d autres effets : Ex : insérer des valeurs dans une base de données : Principe Structure d une page Fichier texte contenant des informations de structuration. La structure est indiquée à l aide de balises : Le nom de la balise indique le type de mise en forme à appliquer. On met une balise ouvrante au début du morceau de texte concerné : <nom balise>début du texte On met une balise fermante à la fin du texte concerné : fin du texte</nom balise> (! au /) Une balise ouvrante peut contenir des attributs de la forme nom="valeur" <nom balise nom1="val1" nom2="val2"...>texte Les attributs permettent de préciser des informations concernant la mise en forme. Les balises peuvent être imbriquées. C est le navigateur qui interprète les balises pour faire l affichage. Une page a la structure suivante : <html> <head> <title>titre de la page</title> </head> <body> Partie affichée dans le navigateur. </body> </html> Les commentaires (non affichés) sont délimités par <!-- et -->. Mise en forme : paragraphes et titres Exemple de document <p>texte</p> texte forme un paragraphe (saut de ligne avant et après). <h1>texte</h1> texte est un titre important (paragraphe avec un affichage plus gros, en gras). <h2>texte</h2> texte est un titre moins important (affichage un peu moins gros).... <h6>texte</h6> texte est un petit titre. <html> <head> <title>la page de Toto</title> </head> <body> <h1>toto</h1> <h2>l histoire de Toto</h2> <p>il était une fois...</p> <p>chemin faisant... </p> <h2>les amis de Toto</h2> <p>ouioui</p> <p>casimir</p> </body> </html>

Mise en forme : styles simples Mise en forme : listes <i>texte</i> ou <em>texte</em> : mettre texte en italique. <b>texte</b> ou <strong>texte</strong> : mettre texte en gras. <u>texte</u> : souligner texte. <big>texte</big> : mettre texte en plus grand. <small>texte</small> : mettre texte en plus petit. <ul> <li>entrée 1</li> <li>entrée 2</li> <li>entrée 3</li> <li>...</li> </ul> <ol> <li>entrée 1</li> <li>entrée 2</li> <li>entrée 3</li> <li>...</li> </ol> Mise en forme : tableaux Mise en forme : tableaux - 2 <table> <tr> <td>case 1</td> <td>case 2</td> </tr> <tr> <td>case 3</td> <td>case 4</td> </tr> </table> <table border="2"> <tr> <td>case 1</td> <td>case 2</td> </tr> <tr> <td>case 3</td> <td>case 4</td> </tr> </table> Liens hypertextes Images <a href="adresse web">texte</a> texte devient un lien cliquable. Lorsque l on clique sur texte, on va à l adresse (URL) adresse web. <a href="http ://www.w3.org/tr/html401/">documentation </a> Le texte Documentation est un lien vers la page web dont l adresse est http ://www.w3.org/tr/html401/ <a href="truc.html">des trucs</a> Le texte Des trucs est un lien vers la page web truc.html située au même endroit que la page courante. Inclure une image : <img src="adresse web image"> Pas de balise fermante pour <img> adresse web image : adresse web où chercher l image.

: principe : balise principale Objectifs : accéder à une page (dynamique) en spécifiant des paramètres ; permettre à l utilisateur de saisir ces paramètres. Comment : en utilisant des champs textuels, des listes déroulantes, des cases à cocher ; à chacun de des composants de saisie correspond un paramètre. <form action="adresse web" method="post" name="nom"> contenu formulaire </form> contenu formulaire : du texte contenant en particulier des balises représentant les différents composants de saisie ; adresse web : l adresse de la page web dynamique à laquelle on souhaite accéder via ce formulaire ; POST : la méthode de transmission des paramètres (on peut également mettre GET) ; nom : le nom du formulaire (optionnel). : saisie de texte : saisie d un grand texte <input type="text" name="nom"> Créée un champ de saisie pour une ligne de texte. nom est le nom du paramètre correspondant à ce composant. On peut ajouter les attributs suivants : size="un nombre" : la taille du champ en caractères ; value="une valeur" : texte pré-saisi utile pour modifier des informations. On peut remplacer type="text" par type="password" si on veut afficher des * au lieu des lettres lors de la saisie. Pas de balise fermante. <textarea name="nom" rows="h" cols="l"> contenu pré saisi </textarea> Créée un champ de saisie pour du texte sur plusieurs lignes. nom est le nom du paramètre correspondant à ce composant. h est la hauteur du composant en nombre de lignes. l est la largeur du composant en nombre de caractères. le contenu pré saisi peut être vide et ne contient de balise. : paramètres cachés <input type="hidden" name="nom" value="val"> Permet de donner la valeur val au paramètre nom. Ce composant n est pas affiché. Utile pour spécifier un identifiant dans un formulaire de modification des informations de la base. Pas de balise fermante : liste déroulante <select name="nom"> <option value="val1">texte 1</option> <option value="val2">texte 2</option>... </select> Créée une liste déroulante ayant comme sélection possible Texte 1, Texte 2,... La valeur du paramètre nom est donnée par la sélection choisie par l utilisateur : val1 pour Texte 1 val2 pour Texte 2... L attribut value est optionnel. Par défaut c est le texte dans la balise <option></option> On peut ajouter selected="true" dans une des balises options pour pré sélectionner cette option.

: boutons de soumission : méthodes de transmission de paramètres <input type="submit" value="texte"> Créée un bouton déclenchant le chargement de la page de destination (attribut action de la balise <form>). texte est un texte qui sera affiché sur le bouton. <input type="reset" value="texte"> Créée un bouton déclenchant la réinitialisation du formulaire, en utilisant les valeurs pré saisies lorsqu elles existent. texte est un texte qui sera affiché sur le bouton. Deux méthodes de transmission des paramètres GET Les paramètres sont encodés avec l adresse de la page : à la fin de l adresse, on ajoute le caractère? puis pour chaque paramètre on ajoute nom=val les paramètres sont séparés par le caractère & Utile pour spécifier des paramètres dans un lien hypertexte. POST Les paramètres sont encodés séparément de l adresse web. Plus pratique pour les formulaires. : deux types de zones Un fichier est le code source d un programme. Ce programme a pour but de générer une page. est un langage impératif proche du C. Délimitées par <? et?> Zones entre <? et?> : code à exécuter (similaire à du code C). Zones à l extérieur de <? et?> : texte et balises qui seront recopiés directement dans le contenu généré. : variables : génération du contenu Le nom d une variable commence par un $ $i, $utilisateur, $id,... Affectation comme en C : $i = valeur ; Les variables ne sont pas explicitement déclarées comme en C. Une variable existe dès que l on a fait une affectation dessus. Une variable peut contenir un nombre, une chaîne de caractères, un booléen (en réalité un entier comme en C) ou un tableau. Deux méthodes : Mettre du texte à l extérieur de <? et?>. Utiliser l instruction print : print valeur ; valeur est évalué puis transformé en texte. Ce texte est ajouté à la suite du contenu déjà généré. On peut utiliser echo à la place de print. On peut considérer que le texte mis à l extérieur de <? et?> est passé en argument à un print.

: chaînes de caractères : opérateurs courants Délimitées par des guillemets simples ( cha^ıne )ou doubles ("cha^ıne"). Si une variable apparaît dans une chaîne avec guillemets doubles, elle est remplacée par sa valeur (convertie en chaîne de caractères). print "<p>mon nom est $nom</p>" ; Les variables apparaissant dans des guillemets simples ne sont pas remplacées. Un. entre deux chaînes les concatène. print "<p>mon nom".$nom."</p>" ; Arithmétiques : + (addition), - (soustraction), * (multiplié), / (divisé), % (modulo), ++ (incrément), -- (décrément). De comparaison : == (égalité), < (inférieur strict), <= (inférieur large), >, >=,!= (différence) Logiques : and, && (et), or, (ou), xor (ou exclusif),! (non) : tableaux : tableaux associatifs Syntaxe similaire au C : $mon tableau[2] = "coucou" ; Range "coucou" dans la case numéro 2. print $mon tableau[2] ; Génère le texte coucou. $mon tableau[] = valeur ; Ajoute une case au tableau $mon tableau et y range valeur. La première case d un tableau porte le numéro 0. Pour créer un tableau vide, on peut utiliser : $mon tableau = array() ; Tableau associant une valeur à une chaîne de caractères. Syntaxe : $personne[ Prenom ] = Toto ; Associe la valeur Toto à la chaîne Prenom. print $personne[ Prenom ] ; Génère le texte Toto. : contrôles : fonctions Structures de contrôles similaires à celles de C : if (...) {...} else {...} for(... ;... ;...) {...} while (...) {...} Définition de fonction : function nom fonction($param1, $param2,...) {... } Inclusion d un autre fichier : include( nom fichier.php ) ; Pour renvoyer un résultat dans une fonction : return valeur ;

Gestion des formulaires : récupération des paramètres Accès à une base de donnée MySQL Principe : L interpréteur initialise un tableau associatif qui associe à chaque nom de paramètre sa valeur. Le nom du tableau initialisé dépend de la méthode : $ POST pour la méthode POST $ GET pour la méthode GET Exemple : afficher la valeur du paramètre nom, s il est transmis par la méthode POST. print $ POST[ nom ] ; Cinq étapes : 1 Connexion au SGBD. 2 Sélection d une base. 3 Envoi d une requête. 4 Récupération et utilisation du résultat. 5 Fermeture de la connexion. On peut itérer les étapes 3 et 4 autant de fois que l on veut avant de fermer la connexion à l étape 5. Connexion Envoi de la requête Connexion au SGBD : $user = toto ; $passwd = mdptoto ; $machine = localhost ; machine où tourne $connect = mysql connect($machine,$user,$passwd) or die( Echec de connexion au SGBD ) ; Choix de la base : $bd = entreprise ; mysql select db($bd,$connect) or die( Echec lors de la selection de la base ) ; Fermeture (après les requêtes) : mysql close($connect) ; $requete = une requete SQL ; $resultat = mysql query($requete,$connect) or die( Erreur durant l exécution de la requ^ete ) ; Exemple : $salaire max = 20000 ; $requete = "SELECT nom FROM employe "." WHERE salaire <= $salaire max" ; $resultat = mysql query($requete,$connect) or die( Erreur durant l exécution de la requ^ete ) ; Durant la phase de développement, il peut être utile d afficher $requete avant son envoi au SGBD. Exploitation du résultat d une requête Exemple Code type pour parcourir le résultat : while ($nuplet = mysql fetch assoc($resultat)) {... } La boucle while permet de parcourir les n-uplets qui forment le résultat (un n-uplet par tour de boucle). $nuplet est un tableau associatif qui associe à chaque attribut du résultat sa valeur pour le n-uplet courant. Si la requête est une mise à jour, il est inutile de parcourir le résultat. $salaire max = 20000 ; $requete = "SELECT nom,salaire FROM employe "." WHERE salaire <= $salaire max" ; $resultat = mysql query($requete,$connect) or die( Erreur durant l exécution de la requ^ete ) ; print "<h3>employés gagnant moins de "."$salaire max euros par an</h3>" ; while ($nuplet = mysql fetch assoc($resultat)) { $nom = $nuplet[ nom ] ; $sal = $nuplet[ salaire ] ; print "<p>$nom gagne $salaire euros par ans.</p>" ; }

: pourquoi? Il peut être utile de conserver des informations d une page sur l autre. Par exemple pour : se souvenir du login de l utilisateur se souvenir des références indiquant à quoi l utilisateur s intéresse se souvenir des dernières pages vistées par l utilisateur etc Jusqu ici, un seul moyen : utiliser des paramètres et penser à les remettre à chaque lien et dans chaque formulaire Programmation fastidieuse et source de problèmes. Une session peut être vue comme un ensemble d informations concernant un utilisateur d un site. par utilisateur, on entend un navigateur sur une machine les informations sont conservées entre deux pages une page peut ajouter ou modifier des informations En, la session est vue comme une variable spéciale appelée $ SESSION : c est un tableau associatif sa valeur est conservée d une page sur l autre Utilisation des sessions en Déconnexion Une page utilisant une session doit obligatoirement, avant même d afficher quoi que ce soit, commencer par l instruction : session start() ; Cette instruction crée la variable $ SESSION et la remplit avec les valeurs qu elle avait dans la page précédente. La variable $ SESSION se manipule ensuite comme un tableau associatif classique. Lorque l utilisateur se déconnecte, il est important de détruire la session par exemple pour éviter qu une seconde personne utilisant le même ordinateur ne se fasse passer pour la première personne pour détruire une session : $ SESSION = array() ; session write close() ; Références Références : http ://fr.selfhtml.org/navigation/html.htm http ://cyberzoide.developpez.com/html/ : http ://www.php.net/manual/fr/ http ://www.phpfrance.com http ://www.developpez.com/php/ Le site web du cours : http ://www710.univ-lyon1.fr/~ecoquery/lif4/