Persistance en Php. Note : les problèmes d accès concurrents, de sécurité et de login sont laissés de côté.



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

Installation / Sauvegarde Restauration / Mise à jour

BIRT (Business Intelligence and Reporting Tools)

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

1. Installation du Module

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

Atelier Le gestionnaire de fichier

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

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

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)

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

Qu est ce qu un ?

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

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)

PHP 4 PARTIE : BASE DE DONNEES

Introduction à Eclipse

TP JAVASCRIPT OMI4 TP5 SRC

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.

B-web V4 MANUEL D UTILISATION. Espace de travail. Clear2Pay Belgium SA B-web V4 Manuel d Utilisation: Espace de travail

TP2 : Client d une BDD SqlServer

KWISATZ_TUTO_module_magento novembre 2012 KWISATZ MODULE MAGENTO

Comment mettre en ligne un site WordPress local

Transfert d un site local vers un serveur. NPDS REvolution 13. Rédaction : Axel Relecture : Dev & Jpb

SYSTÈMES D INFORMATIONS

FileMaker Server 14. Aide FileMaker Server

Informations sur l utilisation du webmail du CNRS. Webmail du CNRS. Manuel Utilisateur

Dans l'article précédent, vous avez appris

Afin d accéder à votre messagerie personnelle, vous devez vous identifier par votre adresse mail et votre mot de passe :

Gestion de stock pour un magasin

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

Compte Rendu d intégration d application

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

Présentation Serveur Apache et pour RePeGlio

Manuel d utilisation de l outil collaboratif

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

La base de données XML exist. A. Belaïd

Édu-groupe - Version 4.3

HighPush. document /06/2009 Révision pour version /11/2008 Revision pour la /10/2008 Documentation initiale.

Mysql avec EasyPhp. 1 er mars 2006

Mode d emploi du Bureau Virtuel (BV) à destination des étudiants en Formation À Distance (FAD)

WordPress :: Migrer son site du local vers le serveur en ligne

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

Manuel d utilisation de la messagerie.

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

Dans cette Unité, nous allons examiner

Création de Sous-Formulaires

Formation : WEbMaster

Thème : Gestion commerciale

Prise en main. août 2014

Gestion des documents avec ALFRESCO

Service de Messagerie évoluée. Guide Utilisateur. Novembre 2006 Messagerie évoluée Completel Guide Utilisateur 1

SOMMAIRE. 1. Connexion à la messagerie Zimbra Pré-requis Ecran de connexion à la messagerie 4

Paginer les données côté serveur, mettre en cache côté client

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

Bien programmer. en Java ex. couleur. Avec plus de 50 études de cas et des comparaisons avec C++ et C# Emmanuel Puybaret.

PHP 5.4 Développez un site web dynamique et interactif

Guide d utilisation. Version 1.1

Préparation à l installation d Active Directory

Document Object Model (DOM)

Rapports d activités et financiers par Internet. Manuel Utilisateur

Installation Iconito École Numérique 2010 sous Windows WampServer

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

Transfert de fichiers (ftp) avec dreamweaver cs5 hébergement et nom de domaine. MC Benveniste

Tutoriel XBNE Connexion à un environnement XBMC distant

Créer et partager des fichiers

TelSurvey Système CATI pour LimeSurvey 11 novembre Manuel administrateur

Manuel d utilisation du web mail Zimbra 7.1

Bases de données cours 1

L utilisation du réseau ISTIC / ESIR

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Installation et utilisation du client FirstClass 11

Documentation de conception

RÉALISATION D UN SITE DE RENCONTRE

Administration du site

SUPPORT DE COURS / PHP PARTIE 3

GER helpdesk permet de traiter et d optimiser la gestion de vos interventions au sein de chaque bureaux.

Tutoriel d installation de Hibernate avec Eclipse

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

CREG : versailles.fr/spip.php?article803

Mise en oeuvre d un intranet à partir de logiciels Open Source avec intégration des certificats numériques et login unique

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

FileMaker Server 14. Guide de démarrage

Information utiles. webpage : Google+ : digiusto/

Notice d installation du patch Lia 8.20

TP1. Outils Java Eléments de correction

Comment accéder à d Internet Explorer

Web Tier : déploiement de servlets

Manuel d utilisateur du site de covoiturage «Etucovoiturage»

KWISATZ MODULE PRESTASHOP

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

WIMS. Découvrir et utiliser

Raja Bases de données distribuées A Lire - Tutoriel

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Guide d installation de Gael

Manuel d utilisation du site web de l ONRN

Créer une connexion entre Sage CRM et Sage Etendue pour émettre directement des devis et commandes

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Transcription:

Persistance en Php Objectif : faire un site pour gérer des articles par catégorie. Chaque catégorie a un nom, chaque catégorie est constitué d articles (titre, auteur, texte), un article est dans une seule catégorie. Il y aura 5 «pages» consultables (sans compter les fichiers php définissant des classes ou du code à inclure): une page pour afficher tous les articles de toutes les catégories deux pages pour créer : o une pour ajouter un article à une catégorie existante o une pour créer une catégorie deux pages pour administrer le site o une (ou plusieurs) page pour ajouter/paramétrer des sources d informations (avec le type de persistance) o une page pour choisir la quelle est affichée Dans la réalisation, vous êtes libres de faire plus de pages (s il y a des étapes) ou moins de pages (une page pourra alors avoir plusieurs parties) Note : les problèmes d accès concurrents, de sécurité et de login sont laissés de côté. La persistance des articles se fera : soit dans un des fichiers (texte) rangés dans des dossiers (1 dossier =une catégorie), soit dans un fichier xml (texte à balise), soit dans une base de données (mysql). Vous allez travailler par itération. L itération 1 est de faire une page pour afficher toutes les articles de toutes les catégories, faire la lecture des données selon les 3 façons (juste ce qu il faut). L itération 2 est d ajouter une page pour «créer et affecter» un article dans une catégorie (sans qu il y ait de doublon) et faire l écriture des données selon les 3 façons (juste ce qu il faut). L itération 3 est d ajouter la création d une catégorie. L itération 4 sera de faire la page de configuration pour choisir / ajouter une source d information (sans s occuper de télécharger les fichiers ou de configurer la base de données). En réserve, pour ceux qui avanceraient vite, il y a 3 autres itérations supplémentaires possibles : gérer les dates de création et de modification (voire d accès), faire des recherches / tri et déployer les sources (fichiers et/ou bd). Note : Nous allons simplifier : un titre ne peut pas être partagé par deux articles de la même catégorie.

Le travail se découpe en deux parties : Iteration 1 : Affichage - la partie «front end», qui génère les pages pour manipuler les catégories / les articles. Le «front end» est utilisé par les internautes. - la partie «back end», qui gère l enregistrement des données et leur accès. Le «back end» est masqué aux internautes. - Dans le cadre de ce tp, le «front end» utilise le «back end» : le «front end» demande des informations au «back end». L utilisation est uniquement dans ce sens. Pour faire la liaison entre les deux, nous allons définir une interface logicielle (ou API du «back end», c.f. vos cours de POO) pour définir un «back end». Ainsi toutes les implémentations du «back end» auront à implémenter cette interface et cela cachera la façon dont le service est rendu (csv, xml, bd). Voici une interface de départ (pour l itération 1) que vous aurez à faire évoluer : Fichier : Persistance.inc interface Persistance { * permet de charger toutes les catégories et tous les articles * @return boolean : vrai en cas de succès, faux sinon public function charger(); * @return array retourne un tableau de toutes les catégories lues public function getcategories(); * @return array retourne un tableau de tous les articles lus de toutes les catégories lues public function getarticles(); } Notez que vous pouvez faire évoluer l interface en classe abstraite si vous le souhaitez. A vous de définir les classes Categorie (dans le fichier Categorie.inc) et Article (dans Article.inc) en choisissant leurs attributs et leurs méthodes (comme par exemple une méthode pour obtenir un code html les représentant). Pourquoi des fichiers.inc L objectif de ne pas utiliser l extension.php est de faire la différence entre les pages du site (.php) et les fichiers qui structurent la programmation du site (.inc). Par ailleurs, avec une bonne configuration du serveur web, il est possible de rendre inaccessible directement certains fichiers : <Files *.inc> Order allow,deny Deny from all </Files> Ce principe s applique aussi aux fichiers xml, csv, txt, etc.

Voici votre carnet de route pour ce tp : - Créer un projet eclipse (/usr/local/eclipse/eclipse-php-3.0.2/eclipse) : Lancez cet eclipse-php et placez votre workspace dans votre dossier ~/www (directement ou dans un sousdossier). Ainsi vos projets seront accessible via une url du type : http://www-mips.unice.fr/~<login>/<workspace/><nom de projet>/<chemin vers le fichier php>. Eclipse vous apportera de la complétion et comme vous serez amenez à l utilisez en Projet Développement (semestre 6), avec d autres fonctionnalités, autant vous habituez. Créez un projet php - Récupérer les données initiales (Categorie / Article) o Récupérez l archive qui contient un exemple de fichier xml, un dossier avec des articles sous forme de fichier et un fichier sql (en mode de compatibilité ANSI) o Récupérez l archives avec les «classes ou interface» Persistance / Categorie / Article. o Créez vos tables dans votre bd en utilisant le fichier sql fournit dans l archive Vous avez une bd disponible sur euterpe.unice.fr Le serveur n est accessible que depuis certains réseaux (celui des machines que vous utilisez mais pas du wifi). L interface web du serveur est : http://euterpe.unice.fr/phpmyadmin/ Votre login est 13_mia_<numero etudiant> Votre mot de passe est votre prénom (1 ère lettre en majuscule, les accents ) Le nom de votre base est celui de votre login pour la BD : WEB_<votrelogin> o Placez le dossier «news» dans votre projet. - Faire la page d affichage qui utilise une persistance (commencez par la lecture de fichier) o Avec les fonctions glob et is_dir, identifiez les dossiers et examinez leurs contenus (encore une fois la fonction glob) pour obtenir les fichiers «.news». Ouvrez les pour obtenir le contenu : la première ligne est le titre de l article, la seconde ligne l auteur et le reste est le contenu de l article. Vous pourrez ainsi créez l ensemble des objets Categorie et Article. - Puis dans n importe quel ordre : o Faire lecture fichier xml Pour le(s) fichier(s) XML, incluez la DTD, ainsi vous pourrez vérifier la validité du document XML avec php (méthode DOMDocument::validate). Avec getelementsbytagname obtenez toutes les catégories, et pour chaque catégorie, obtenez tous les articles (avec getelementsbytagname). Puis continuez l analyse de l élément pour obtenir le titre, l auteur et le texte. o Faire lecture bd Pour obtenir toutes les catégories, effectuez la requête SELECT * FROM categories;.

Pour obtenir les articles par catégorie, effectuez la requête SELECT * FROM articles WHERE `categorie` = \"$categorie\" ORDER BY `articles`.`titre` ASC;". Edition du php Placez votre workspace dans votre dossier ~/www (sur votre site web). Placez des commentaires «intelligents» dans php : devant une variable ou une méthode ou une fonction, tapez : «<entrée>». Vous pouvez alors rentrer les «types» avec l annotation @var ou @param ou @return (à ajouter pour chaque méthode qui a une valeur de retour). Ces commentaires sont utiles pour la complétion (pas autant qu en Java) et ce seront les commentaires pour la génération de documentation API avec phpdocumentor (vous verrez cela lors au semestre 6). Pour éviter de mettre tous les «include» liés aux classes (surtout en cas d utilisation de SESSION), vous pouvez ajouter la fonction autoload. Si vos classes sont dans des fichiers avec le même nom et que tous vos fichiers sont aux mêmes endroits : function autoload($classname) { // il faut indiquer le chemin depuis le script qui utilise les classes include_once "$classname.inc"; } Pour exécuter vos codes php / pages web, vous pouvez consulter vos pages via un navigateur à l url URL http://www-mips.unice.fr/~<votre login>/<votre workspace>/[chemin de la page dans le projet ]. Vous pouvez aussi utiliser le navigateur interne à eclipse : cliquez droit sur un fichier à essayer, choisissez «Run as» / «Php Web Application». Dans la boite de dialogue «Launch», modifier l url pour qu elle ressemble à http://www-mips.unice.fr/~<votre login>/<votre workspace>/[reste du texte = chemin de la page dans le projet ]. Comment choisir dans un premier temps la persistance / source d information, sans avoir à modifier le code source? Il y a plusieurs façons de faire, mais le plus rapide reste le paramètre placé dans l url : «?persistance=<nom de la classe>». Pour récupérer ce paramètre, et l utiliser, voici un code «minimal» (car il est possible de faire des tests sur le type pour ne pas utiliser n importe quoi) : * indique le type de persistance utilisée, avec une valeur par défaut * @var string $typepersistance = "PersistanceFichier"; if (isset($_get["persistance"])) { $typepersistance = $_GET["persistance"]; } * persitance utilisée * @var Persitance $persitance = new $typepersistance();

Pour faciliter les changements d accès à la base de données entre un serveur distant (le vôtre euterpe.unice.fr) et un serveur local (si certain développe sur un ordinateur portable ou chez eux). Dans ce cas, le 1 er paramètre de mysql_connect variera d une configuration à une autre : $server = "euterpe.unice.fr"; if ($_SERVER["SERVER_NAME"]=="localhost") $server = "localhost"; // vous pouvez ajouter un test avec le port du server // les paramètres utilisés à titre illustratif $connexion = new PDO("mysql:host=$server;dbname=database", 'username','password'); Itération 2 (ajout d article) Le choix de la persistance dans laquelle vous ajouter un article est fait de la même façon que le choix de la persistance dans l itération 1. Depuis la page d affichage ajoutez un lien vers la page d ajout d article en conservant la persistance utilisée (paramètre de l url ou variable de session). Depuis la page d ajout d article, il y a un lien vers la page d affichage (en conservant la persistance utilisée). Pour cette itération, vous devez faire un formulaire d ajout d article. Les catégories que vous pourrez choisir doit être limité à celles existent. Générez donc une balise «select» dont toutes les «option» correspondent à une catégorie existante. Au niveau du formulaire et de l ajout, il faudra savoir quelle persistance est utilisée. Pour cela vous pouvez utiliser une variable de session ou un paramètre dans l url (du style?persistance=<nom de classe>, comme pour essayer les différentes persistances lors de l itération 1). Pour les différentes persistances, vous aurez à vérifier que la catégorie existe bien (le test peut se faire sur le nom de la catégorie). Pour ajouter le nouvel article : - Pour les fichiers, il faudra créer un nouveau fichier «.news» dans le bon dossier (la catégorie) en respectant le modèle : la première ligne est le titre de l article, la seconde ligne l auteur et le reste est le contenu de l article. Pour nommer l article et ne pas écraser un ancien article, vous pouvez choisir comme nom la valeur de strtotime("now") - Pour le fichier xml, vous devez créer un nouvel élément «article» et l ajout (méthode appendchild) au bon élément catégorie. Il faudra bien sauvegarder le fichier (méthode save) - Pour la base de données, il faudra faire une requête "INSERT INTO `articles` (`creation`, `categorie`, `titre`, `auteur`, `texte`) VALUES (CURRENT_TIMESTAMP, '$cat', '$titre', '$auteur', '$texte') ;". Dans tous les cas, pensez à l encodage des caractères (et aux fonctions utf8_encode ou utf8_decode ou iconv). Votre site devra dire si l ajout d article a bien été effectué ou non.

Itération 3 (ajout de catégorie) De manière similaire à l itération 2, faites une page pour ajouter une catégorie. La nouvelle catégorie ne devra pas exister préalablement. Pour les trois types de persistances : - Pour les fichiers, ajouter une catégorie revient à créer un dossier - Pour le fichier XML, ajouter une catégorie revient à créer un nouvel élément à placer sous la racine - Pour la base de données, ajouter une catégorie revient à insérer une nouvelle entrée dans la table adéquate. Dans tous les cas, pensez à l encodage des caractères (et aux fonctions utf8_encode ou utf8_decode ou iconv ou à paraméter PDO avec l encodage). Votre site devra dire si la création de catégorie a bien été effectuée ou non. Itération 4 (page de configuration) Pour la dernière itération, faite une page qui permettent de choisir la source d information. Au début commencez avec les trois persistances que vous avez réalisées. Enfin ajoutez une page permettant d ajouter une nouvelle persistance (en les nommant) : - Pour une persistance «Fichiers», le paramètre est le nom du dossier «racine» (voir le nom de l extension des fichiers) - Pour une persistance «XML», le paramètre est le fichier XML (voire le nom des balises) - Pour une persistance «BD», les paramètres sont : le serveur, le login / mdp / le nom de la base de données (voire les noms des tables)