Inf340 Systèmes d information. Premier site ce qu il ne faut pas faire

Documents pareils
CREATION WEB DYNAMIQUE

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

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

Pratique et administration des systèmes

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

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

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)

Stockage du fichier dans une table mysql:

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

Modélisation et Gestion des bases de données avec mysql workbench

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

PHP 4 PARTIE : BASE DE DONNEES

Olivier Mondet

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

1 Position du problème

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

SUPPORT DE COURS / PHP PARTIE 3

Attaques applicatives

Application web de gestion de comptes en banques

Langage SQL : créer et interroger une base

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

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

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

I. MySQL : Serveur et SGBD

Création et Gestion des tables

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

SQL Historique

Installation d'un serveur FTP géré par une base de données MySQL

Les BASES de DONNEES dans WampServer

Bases de données relationnelles

TP Service HTTP Serveur Apache Linux Debian

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

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Installation d un hébergement Web à domicile

Introduction. Passage de sites statiques à des sites dynamiques

TP JAVASCRIPT OMI4 TP5 SRC

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

Mysql avec EasyPhp. 1 er mars 2006

Master Exploration Informatique des données DataWareHouse

Gestion de base de données

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

Le langage SQL (première partie) c Olivier Caron

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

PDO : PHP Data Object 1/13

Cours: Administration d'une Base de Données

BTS SIO Dossier BTS. PURCHLA Romain

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

TP3 : Creation de tables 1 seance

Pour les débutants. langage de définition des données

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

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

CREATION d UN SITE WEB (INTRODUCTION)

Préparation d un serveur Apache pour Zend Framework

Programmation Web. Introduction

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

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

Cours Bases de données 2ème année IUT

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.

Introduction à JDBC. Accès aux bases de données en Java

Historisation des données

Les bases de données

Module BD et sites WEB

OpenPaaS Le réseau social d'entreprise

TP HTTP. Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A

PHP. PHP et bases de données

Maintenance et gestion approfondie des Systèmes d exploitation Master 2 SILI. Année universitaire David Genest

Serveur Subversion Debian GNU/Linux

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Bases de données relationnelles & SQL

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

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

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

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

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

1. Base de données SQLite

Rapport d audit de sécurité

Bases de Données et Internet

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

TP Contraintes - Triggers

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

I4 : Bases de Données

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

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

TD4 - Supervision et métrologie des réseaux. 1 Supervision des applications et services réseaux et des ressources locales

Licence Professionnelle Commerce Electronique. MySQL. Michel DUBOIS Michel Dubois : Support de cours SGBD N 1

Configurer la supervision pour une base MS SQL Server Viadéis Services

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

L installation du module Webmail nécessite également quelques prérequis, à savoir :

PROJET 1 : BASE DE DONNÉES REPARTIES

Mise en place d un serveur Proxy sous Ubuntu / Debian

BTS/CGO P10 SYSTEME INFORMATION Année

Transcription:

Inf340 Systèmes d information Premier site ce qu il ne faut pas faire

Objectifs Objectif : Réaliser un premier site en utilisant une mauvaise approche de conception. Le site permet de gérer un carnet d adresse composé d une liste de noms et de numéros de téléphone, un nom peut posséder plusieurs numéros de téléphones.

Conditions du développement Nous allons réaliser notre site web dynamique sur une machine de développement nous utiliserons WAMP : Windows Apache (serveur HTTP) MySQL (SGBD) PHP Comme environnement de développement nous utiliserons eclipse

La mise en place du serveur apache Ne souhaitant pas gérer de résolution de nom (serveur DNS, fichier «hosts»), nous allons utiliser un alias apache. L URL http://localhost/demo1 correspondra au répertoire D:\xxx\inf340_cm_demo1 L assistant graphique de WAMP vous génère : Alias /demo1/ "D:\xxx\inf340_cm_demo1/"

La mise en place du serveur apache Vous devez obtenir une configuration de ce type Alias /demo1/ "D:\xxx\inf340_cm_demo1/" <Directory "D:\xxx\inf340_cm_demo1/"> Options Indexes FollowSymLinks MultiViews AllowOverride all Require local </Directory>

Définition du modèle Nous allons devoir rendre nos données persistantes et pour cela utiliser un SGBD. Pour nous il s agit de MySQL. Pour créer les tables, vous pouvez utiliser : des ateliers de génie logiciel comme PowerAMC qui à partir du MCD (Modèle Conceptuel de Données) va vous générer votre MPD (Modèle Physique de Données) des logiciels dédiés comme MySQL Workbench qui à partir d un MLD (Modèle logique de données) va vous générer votre MPD. Travailler à la main.

Notre MLD Analyse du modèle : Une personne peut ne pas avoir de numéro de téléphone. Deux personnes peuvent avoir le même nom et le même prénom (il faudrait sinon utiliser le nom et le prénom comme clef primaire). Un même numéro de téléphone ne peut-être partagé entre plusieurs personnes.

Notre MPD -- ----------------------------------------------------- -- Table `demo1db`.`personne` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `personne` ( `idpersonne` INT NOT NULL AUTO_INCREMENT, `nom` VARCHAR(45) NOT NULL, `prenom` VARCHAR(45) NOT NULL, PRIMARY KEY (`idpersonne`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `demo1db`.`numero_telephone` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `numero_telephone` ( `numero_telephone` VARCHAR(45) NOT NULL, `personne_idpersonne` INT NOT NULL, PRIMARY KEY (`numero_telephone`), CONSTRAINT `fk_numero_telephone_personne` FOREIGN KEY (`personne_idpersonne` ) REFERENCES `personne` (`idpersonne` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB;

Peupler la base Nous pouvons aussi peupler notre base avec des insert -- ----------------------------------------------------- -- Data for table `demo1db`.`personne` -- ----------------------------------------------------- INSERT INTO `personne` (`idpersonne`, `nom`, `prenom`) VALUES (1, 'Durand', 'Jean'); INSERT INTO `personne` (`idpersonne`, `nom`, `prenom`) VALUES (2, 'Dupond', 'Paul'); -- ----------------------------------------------------- -- Data for table `demo1db`.`numero_telephone` -- ----------------------------------------------------- INSERT INTO `numero_telephone` (`numero_telephone`, `personne_idpersonne`) VALUES ('400000000', 1); INSERT INTO `numero_telephone` (`numero_telephone`, `personne_idpersonne`) VALUES ('600000000', 1); INSERT INTO `numero_telephone` (`numero_telephone`, `personne_idpersonne`) VALUES ('100000000', 2); Il ne faut pas oublier de conserver le tout dans un script de déploiement

Configuration du SGBD Nous allons en développement utiliser le compte root (sans mot de passe )et créer la base demo1db. Pour accéder au SGBD vous pouvez soit utiliser : Un client lourd Une application Web (comme PHPMyAdmin)

Réalisation d une page d accueil Le fichier servi par défaut est index.php Nous allons l utiliser pour afficher le contenu de la base : 1. Se connecter et choisir la base 2. Exécuter une requête et récupérer le résultat 3. Afficher le résultat 4. Se déconnecter

Réalisation d une page d accueil <?php $db = mysql_connect('localhost', 'root', ''); mysql_select_db('demo1db', $db); $sql = 'SELECT idpersonne,nom,prenom FROM personne'; $req = mysql_query($sql) or die('erreur SQL!<br>'. $sql. '<br>'. mysql_error()); while ($data = mysql_fetch_assoc($req)) { print_r($data); } mysql_close();?>

Réalisation d une page d accueil avec un peu de mise en forme <?php while ($data = mysql_fetch_assoc($req)):?> <tr> <td> <?php echo $data['nom'];?> </td> </tr> <?php endwhile;?>

Modifier la page d accueil pour pouvoir modifier supprimer des personnes Deux moyens principaux moyens en html pour envoyer de l information à un serveur HTTP : Les formulaires Envoi en POST ou GET vers une URL Seul les input ou les select nommés sont transmis Les ancres Envoi en GET

Formulaire d ajout <form action="ajouter.php" method="post"> <p> Nom <input type="text" name="nom"/> Prénom <input type="text" name="prenom"/> <input type="submit" value="ajouter"/> </p> </form> Envoie la valeur de nom et prenom vers le script ajouter.php en mode post.

Script d ajout Lire les données ($_GET[], $_POST[], $_REQUEST[]) Effectuer une requête SQL Rediriger vers la page d accueil (header("location:»))

Script d ajout $nom = $_POST['nom']; $prenom = $_POST['prenom']; $db = mysql_connect('localhost', 'root', ''); mysql_select_db('demo1db', $db); $sql='insert INTO personne(nom,prenom) VALUES (\''.$nom.'\',\''.$prenom.'\')'; $req = mysql_query($sql) or die('erreur SQL!<br>'. $sql. '<br>'. mysql_error()); mysql_close(); header('location: index.php');

Script de suppression Il est invoqué via une ancre dont en GET mais repose sur le même principe que le script d ajout. Cependant l url doit contenir le numéro de la personne à supprimer : En PHP : <a href="<?php echo './supprimer.php?id='.$data['idpersonne'];?>" > supprimer </a> En HTML : <a href="./supprimer?id=1" > supprimer </a>

Script de suppression $idpersonne = $_GET['id']; $db = mysql_connect('localhost', 'root', ''); mysql_select_db('demo1db', $db); $sql = 'DELETE FROM personne WHERE idpersonne='. $idpersonne; $req = mysql_query($sql) or die('erreur SQL!<br>'. $sql. '<br>'. mysql_error()); mysql_close(); header('location: index.php');

La modification et la consultation vont conduire à une nouvelle page Il faut recevoir l identifiant de la personne Faire une requête pour récupérer les autres champs Faire une requête pour recouper les numéros de téléphone associés

La modification et la consultation vont conduire à une nouvelle page $sql = 'SELECT idpersonne,nom,prenom FROM personne where idpersonne='. $numero; $req = mysql_query($sql) or die('erreur SQL!<br>'. $sql. '<br>'. mysql_error()); $personne = mysql_fetch_assoc($req); $sql = 'SELECT numero_telephone FROM numero_telephone where personne_idpersonne='. $numero; $req = mysql_query($sql) or die('erreur SQL!<br>'. $sql. '<br>'. mysql_error());

Continuer le jeu A chaque fois, il faut récupérer l information du script ou de la page précédente en GET ou en GET, faire une ou des requêtes, afficher. Rem : les inputs des formulaires de type hidden permettent d envoyer de l information sans l afficher.

Pourquoi ne pas développer comme Le déploiement => cela Des URL en dur sont utilisées ce qui impose de parcourir le code pour les modifier. L information de connexion est dans chaque page, ce qui impose aussi de parcourir les pages pour les modifier. Utiliser un fichier contenant les constantes et l inclure dans les pages

Pourquoi ne pas développer comme La maintenance : => cela Si le SGBD change, il faut tout reprendre et connaître les deux SGBD. Utiliser une surcouche d abstraction pour accéder au données (en TD PDO, en TP Doctrine).

Pourquoi ne pas développer comme La maintenance : => cela L affichage, la navigation et l accès aux données sont réalisés dans le même script ce qui impose de connaître les trois domaines et suivre les modifications de scripts en scripts Utiliser le design pattern MVC

Pourquoi ne pas développer comme La sécurité: => cela Tous les scripts sont accessibles via une URL donc utilisables sans contrôle. Possibilité d injecter du sql ou des scripts Utiliser un framework