PHP/MYSQL. Web Dynamique

Documents pareils
STID 2ème année : TP Web/PHP

Programmation Web. Madalina Croitoru IUT Montpellier

TP JAVASCRIPT OMI4 TP5 SRC

Stockage du fichier dans une table mysql:

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

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

Mysql avec EasyPhp. 1 er mars 2006

Pratique et administration des systèmes

PHP et les Bases de données - Généralités

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

SYSTÈMES D INFORMATIONS

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

PHP 4 PARTIE : BASE DE DONNEES

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

CREATION WEB DYNAMIQUE

Attaques applicatives

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

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

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 statique : client-serveur. PHP/MySQL: Sites dynamiques Formulaires et bases de données. Discussion HTTP. Caractéristiques du HTTP

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

HTML, CSS, JS et CGI. Elanore Elessar Dimar

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Démonstration de la mise en cache via HTML 5 sur iphone

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

Bases de Données et Internet

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

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

Formulaire pour envoyer un mail

Séance d ED n 5 : HTML et JavaScript

PHP. PHP et bases de données

Application web de gestion de comptes en banques

Techniques de Programmation pour Internet

Panel des technologies Web

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

Rapport de projet Site web pour une association

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Programmation Internet Cours 4

Module BD et sites WEB

Extended communication server 4.1 : VoIP SIP service- Administration

Formation HTML / CSS. ar dionoea

CREATION d UN SITE WEB (INTRODUCTION)

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

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Module : programmation site Web dynamique Naviguer entre les pages via site map

Hébergement de site web Damien Nouvel

HTML/CSS - Travaux Pratiques 2

Guide d implémentation. Réussir l intégration de Systempay

1. La plate-forme LAMP

DOM - Document Object Model

Gestion Électronique de Documents et XML. Master 2 TSM

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

25 mars. Tutoriel sur Laravel. Préparé par : Lydiane Beaulne-Bélisle. Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel.

Les bases de données

RÉALISATION D UN SITE DE RENCONTRE

Attaques de type. Brandon Petty

2 Formation utilisateur

Sécurité des applications web. Daniel Boteanu

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

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

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

Introduction. Passage de sites statiques à des sites dynamiques

Notes pour l utilisation d Expression Web

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

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

WebSSO, synchronisation et contrôle des accès via LDAP

Olivier Mondet

Bases de données relationnelles

PLUGINS Guide du Développeur STEPHANE FERRARI. P l u X m l 5.4

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Comment développer et intégrer un module à PhpMyLab?

Les BASES de DONNEES dans WampServer

Mise en place d un serveur Proxy sous Ubuntu / Debian

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

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

EXPOSE. La SuisseID, qu est ce que c est? Secrétariat d Etat à l Economie SECO Pierre Hemmer, Chef du développement egovernment

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Guide d interfaçage SSO Connexion des ressources aux plates-formes de type Corrélyce. Sommaire. Titre du document

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

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

PROJET 1 : BASE DE DONNÉES REPARTIES

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

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

Diffuser un contenu sur Internet : notions de base... 13

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

Bases de Données relationnelles et leurs systèmes de Gestion

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

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

1 Position du problème

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Transcription:

PHP/MYSQL Web Dynamique ENSG Juin 2008

Ces 6 jours de formation Jour 1 : présentations, attentes, principes, HTML Jour 2 : CSS, et HTML Jour 3 : PHP, formulaires, Base de données Jour 4 : Rappel PHP, Extraction de données, affichage Jour 5 : Requêtes, Insertion de données Jour 6 : Sécurité, questions, retours sur la formation.

NOTRE EXEMPLE Application simple en PHP

Gestion de bibliothèque Enregistrement des ouvrages : titre, auteur, date de publication, catégorie Ajout de nouveau livres par des utilisateurs autorisés Recherche par catégorie, par titre, par auteur Accès par le web

Application web PHP : traitements MySQL : base de données contenant les informations sur les livres, utilisateurs, etc...

PHP Langage de script adapté au web

Où trouver tout ce que vous voulez savoir et tout ce que vous ne voulez pas savoir à propos de PHP?

http://www.php.net

AU REVOIR Bonne fin de journée!

LANGAGE PHP Introduction

BONJOUR LE MONDE Le n-ième He!o World

Hello world Nouveau langage, nouveau He!o world! Créer un fichier index.php

Hello world Nouveau langage, nouveau He!o world! Créer un fichier index.php <?php?> echo Hello world ;

Explications <?php?> echo Hello world ;

Explications Délimitent le code PHP <?php?> echo Hello world ;

Explications Délimitent le code PHP Tout ce qui est en dehors de ces balises n est pas interprété comme du code PHP mais directement envoyé au client. <?php?> echo Hello world ;

Hello world 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/ xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title>mon index.php!!!</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <p> <?php echo Hello World! ;?> </p> </body> </html>

Hello world 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/ xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title>mon index.php!!!</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <p> <?php echo Hello World! ;?> </p> </body> </html> Seule partie interprétée par PHP

LES VARIABLES et les opérateurs

PHP et les variables Pas besoin de déclarer les variables Pas de type de données Pas de gestion mémoire

PHP et les variables Pas besoin de déclarer les variables Pas de type de données Pas de gestion mémoire <?php $foo = bar ; $foo = 3; $foo++;?>

Opérateurs Opérateur Exemple Résultat si $bar = 3 = affectation $foo = $bar 3 + addition 2+3+$bar; 8 - soustraction 2-3-$bar; -2 * multiplication 2*3*$bar; 18 / division $bar/2; 1.5 % modulo $bar%2 1. concaténation $bar. ok 3 ok

Opérateurs Opérateur Exemple Résultat si $bar = 3 = affectation $foo = $bar 3 + addition 2+3+$bar; 8 - soustraction 2-3-$bar; -2 * multiplication 2*3*$bar; 18 / division $bar/2; 1.5 % modulo $bar%2 1. concaténation $bar. ok 3 ok Ne pas confondre avec l opérateur de comparaison ==

Opérateurs de comparaison Opérateur Exemple Résultat == égalité de valeur 3 == 3 TRUE === égalité valeur et type 3 === 3 FALSE < inférieur strict 3 < 3 FALSE <= inférieur ou égal 3 <= 3 TRUE > supérieur strict 3 > 3 FALSE >= supérieur ou égal 3 >= 3 TRUE!= différent (valeur) 3!= 3 FALSE!== différent (valeur ou type) 3!== 3 TRUE

Opérateurs logiques Opérateur! NON && ET OU

LES TABLEAUX Une structure de données très utile en PHP

PHP et les tableaux <?php // Création (facultatif) $montab = array();?> // Initialisations $montab[0] = 1; $montab[1] = 32.5; $montab[2] = Hello World ; // Tableaux à plusieurs dimensions $montab[3] = array(); $montab[3][0] = 1; $montab[3][2] = Hello World ; // Initialisation sans connaître le numéro $montab[] = 32; // Équivalent à $montab[4] = 32; // Création et initalisation $tableau2 = array(1,32.5, Hello World,32);

Tableaux de hachage <?php // Création (facultatif) $montab = array();?> // Initialisations $montab[ couleur ] = vert ; $montab[ temperature ] = 32.5; $montab[ message ] = Hello World ; // Création et initalisation $tableau2 = array( couleur => vert, temperature =>32.5, message => Hello World );

Tableaux de hachage <?php // Création (facultatif) $montab = array();?> // Initialisations $montab[ couleur ] = vert ; $montab[ temperature ] = 32.5; $montab[ message ] = Hello World ; // Création et initalisation $tableau2 = array( couleur => vert, temperature =>32.5, message => Hello World ); NB : les tableaux à plusieurs dimensions sont aussi possibles

Parcours de tableaux <?php // Récupération de la clé foreach ($tableau as $cle => $valeur) { echo <p>la clé.$cle. est associée à la valeur :.$valeur. <p> ; }?> // Pas de récupération de la clé foreach ($tableau as $valeur) { echo <p>le tableau contient la valeur :.$valeur. <p> ; }

<?php if ($truc == machin ){ // Si truc = machin }else{ // Sinon }?> Tests

LES FORMULAIRES Interactions avec l utilisateur

Données des formulaires Code source HTML <form action= fichier.php method= get > <input type= text name= nom /> <input type= submit value= Envoyer /> </form>

Données des formulaires Fichier qui devra analyser le formulaire Code source HTML <form action= fichier.php method= get > <input type= text name= nom /> <input type= submit value= Envoyer /> </form>

Données des formulaires Fichier qui devra analyser le formulaire Code source HTML <form action= fichier.php method= get > <input type= text name= nom /> <input type= submit value= Envoyer /> </form> Valeur renvoyée par l utilisateur accessible via $_GET[ nom ]

Méthodes de formulaires GET POST passé dans la barre d adresse passé en HTTP marques-page et liens possibles pas de marque-page $_GET[ nom ] $_POST[ nom ]

PETIT EXERCICE Formulaire d authentification

Exo : formulaire et PHP Créer un formulaire d authentification dans un fichier php Traiter le résultat du formulaire avec le même fichier Si le login est admin et le mot de passe pipo remplacer le formulaire par un cadre rappelant l identité de l utilisateur Afficher une information secrète Fonctions utiles : array_key_exists() et is_array() (voir la documentation de PHP)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/ html;charset=utf-8" /> <title>exercice 1</title> </head> <body> <h1>page web protégée</h1> <div id="identite"> <?php if (is_array($_post) && array_key_exists("login", $_POST) && array_key_exists("pass",$_post) && $_POST["login"]=="admin" && $_POST["pass"]=="pipo") { // Ok $connecte = true; echo "<p>bienvenue Admin!</p>"; }else{ $connecte = false; // Formulaire?> <form method="post" action="index.php"> <dl> <dt>nom</dt> <dd><input type="text" name="login" /></dd> <dt>mot de passe</dt> <dd><input type="password" name="pass" /></ dd> </dl> <p><input type="submit" value="connexion" /></ p> </form> <?php }?> </div> <div id="contenu"> <?php if ($connecte) {?> <p>informations confidentielles, accessibles uniquement pour l'admin! Trop fort!</p> <?php }else {?> <p>connectez-vous d'abord!</p> <?php }?> </div> </body> </html>

Comment fait-on pour gérer les identités grâce à la base de données?

MYSQL SGBD libre

SGBD libre Système de gestion de bases de données libre Bases de données relationnelle (standard) Suffit à la plupart des usages du web Grand succès grâce au lien fort avec PHP Libre : open source et gratuit

SGBD simple Pas de transactions (sur MyISAM) Pas de procédures stockées Pas de contrôle d intégrité

SQL Échanger avec la base de données

Un langage standard Langage normalisé Repris par tous les SGBD, mais adapté aux besoins : petites différences dans la syntaxe base et principes communs

Manipulation des données SELECT : récupération de données selon certains critères INSERT : enregistrement de nouvelles données UPDATE : modification de données existantes

Manipulation de la structure CREATE : création d une table ou d une base de données DELETE : effacement d une table ou base ALTER : modifier une table existante

MODÉLISATION Créer un schéma de base de données

Identifier les données Utilisateurs Livres Auteurs Catégories

Modélisation de la base de données

Modélisation de la base de données Utilisateur Nom Prénom Login Mot de passe Auteur Nom Prénom 1.Identifier les objets Livre ISBN Titre Année de publication Catégorie Nom

Modélisation de la base de données Utilisateur Nom Prénom Login Mot de passe Auteur Nom Prénom Livre 1.Identifier les objets 2.Trouver des identifiants uniques ISBN Titre Année de publication Catégorie Nom

Modélisation de la base de données Utilisateur id Nom Prénom Login Mot de passe Auteur id Nom Prénom Livre 1.Identifier les objets 2.Trouver des identifiants uniques ISBN Titre Année de publication Catégorie id Nom

Modélisation de la base de données 1.Identifier les objets Utilisateur id Nom Prénom Login Mot de passe 2.Trouver des identifiants uniques Livre ISBN Titre Année de publication 3.Trouver les relations entre objets et les cardinalités 1 auteur écrit plusieurs livres 1 livre n a qu un auteur Auteur id Nom Prénom Catégorie id Nom

Modélisation de la base de données 1.Identifier les objets Utilisateur id Nom Prénom Login Mot de passe 2.Trouver des identifiants uniques Livre ISBN Titre Année de publication 3.Trouver les relations entre objets et les cardinalités 1 auteur écrit plusieurs livres 1 livre n a qu un auteur 1 livre appartient à 1 ou plusieurs catégories 1 catégorie peut contenir plusieurs livres Auteur id Nom Prénom Catégorie id Nom

Modélisation de la base de données 1.Identifier les objets Utilisateur id Nom Prénom Login Mot de passe 2.Trouver des identifiants uniques Livre ISBN Titre Année de publication 3.Trouver les relations entre objets et les cardinalités 1,1 1 auteur écrit plusieurs livres 1 livre n a qu un auteur 1 livre appartient à 1 ou plusieurs catégories 1 catégorie peut contenir plusieurs livres 1,n 0,n 1,n Auteur id Nom Prénom Catégorie id Nom

Modélisation de la base de données Utilisateur id Nom Prénom Login Mot de passe Livre 1,1 1,n Auteur id Nom Prénom ISBN Titre Année de publication 1,n Catégorie 0,n id Nom

Modélisation de la base de données Utilisateur id Nom Prénom Login Mot de passe Livre 1,1 1,n Auteur id Nom Prénom 4.Relations 1-n : mettre une clé ISBN Titre Année de publication #auteur étrangère dans la table des objets qui ne sont liés qu à un seul objet 1,n 0,n Catégorie id Nom

Modélisation de la base de données Utilisateur id Nom Prénom Login Mot de passe Livre 1,1 1,n Auteur id Nom Prénom 4.Relations 1-n : mettre une clé ISBN Titre Année de publication #auteur étrangère dans la table des objets qui ne sont liés qu à un seul objet 1,n 5.Relations n-n : créer une table de liaison 1,1 Appartenance #catégorie #livre 1,1 0,n Catégorie id Nom

Exemples de données ISBN Titre Auteur 32234S Le Calme 1 08534G Tempête 1 id Nom Prénom 1 Dupond Jean 2 Dupont Georges ISBN Categorie 08534G 1 id Catégorie 08534G 2 1 Roman 2 Policier

Exemples de données ISBN Titre Auteur 32234S Le Calme 1 08534G Tempête 1 id Nom Prénom 1 Dupond Jean 2 Dupont Georges ISBN Categorie 08534G 1 id Catégorie 08534G 2 1 Roman 2 Policier

Exemples de données ISBN Titre Auteur 32234S Le Calme 1 08534G Tempête 1 id Nom Prénom 1 Dupond Jean 2 Dupont Georges ISBN Categorie 08534G 1 id Catégorie 08534G 2 1 Roman 2 Policier

Exemples de données ISBN Titre Auteur 32234S Le Calme 1 08534G Tempête 1 id Nom Prénom 1 Dupond Jean 2 Dupont Georges ISBN Categorie 08534G 1 id Catégorie 08534G 2 1 Roman 2 Policier

Exercice Créez des tables Écrivez des données d exemple : comptes d utilisateurs, livres, catégories, auteurs Écrivez et testez avec phpmyadmin des requêtes qui permettent de récupérer les livres d une certaine catégorie ou les ouvrages d un auteur (selon son nom)