webÉducation – 10 juin 2004

43
WebÉducation – 10 Juin 2004 Jonathan Dumas Technicien en informatique Conseil du statut de la femme Téléphone : (418) 644-9200 [email protected] .ca

Upload: suki

Post on 21-Mar-2016

41 views

Category:

Documents


2 download

DESCRIPTION

WebÉducation – 10 Juin 2004. Jonathan Dumas Technicien en informatique Conseil du statut de la femme Téléphone : (418) 644-9200 [email protected]. Le PHP. 1ere Partie Introduction au PHP. Historique. « Le besoin est la mère de toutes les inventions... » Besoin primaire: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: WebÉducation – 10 Juin 2004

WebÉducation – 10 Juin 2004

Jonathan DumasTechnicien en informatiqueConseil du statut de la femme 

Téléphone : (418) [email protected]

Page 2: WebÉducation – 10 Juin 2004

Le PHP

1ere PartieIntroduction au PHP

Page 3: WebÉducation – 10 Juin 2004

Historique● « Le besoin est la mère de toutes les inventions... »

– Besoin primaire:● Pages Web dynamiques ● Applications Web

– Outils existant ● C/C++

– Grande complexité– Pas du tout taillé pour le besoin initial

● Perl (cgi)– Processeur de texte– Commun et largement utilisé– Un peu plus d'affinité avec le besoin initial, on approche de la

solution.

Page 4: WebÉducation – 10 Juin 2004

Formulaire simple en langage C

#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <string.h>

#define ishex(x) (((x) >= '0' && (x) <= '9') || ((x) >= 'a' && (x) <= 'f') || ((x) >= 'A' && (x) <= 'F'))

int htoi(char *s) { int value; char c;

c = s[0]; if(isupper(c)) c = tolower(c); value=(c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10) * 16;

c = s[1]; if(isupper(c)) c = tolower(c); value += c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10;

return(value);}

void main(int argc, char *argv[]) { char *params, *data, *dest, *s, *tmp; char *name, *age;

puts("Content-type: text/html\r\n"); puts("<html><head><title>Form Example</title></head>"); puts("<body><h1>My Example Form</h1>"); puts("<form action=\"form.cgi\" method=\"GET\">"); puts("Name: <input type=\"text\" name=\"name\">"); puts("Age: <input type=\"text\" name=\"age\">"); puts("<br><input type=\"submit\">"); puts("</form>");

data = getenv("QUERY_STRING"); if(data && *data) { params = data; dest = data; while(*data) { if(*data=='+') *dest=' '; else if(*data == '%' && ishex(*(data+1))&&ishex(*(data+2))) { *dest = (char) htoi(data + 1); data+=2; } else *dest = *data; data++; dest++; } *dest = '\0'; s = strtok(params,"&"); do { tmp = strchr(s,'='); if(tmp) { *tmp = '\0'; if(!strcmp(s,"name")) name = tmp+1; else if(!strcmp(s,"age")) age = tmp+1; } } while(s=strtok(NULL,"&"));

printf("Hi %s, you are %s years old\n",name,age); } puts("</body></html>");}

Et avec le Perl, c'est comment?

Page 5: WebÉducation – 10 Juin 2004

Formulaire simple en Perluse CGI qw(:standard);print header;print start_html('Form Example'), h1('My Example Form'), start_form, "Name: ", textfield('name'), p, "Age: ", textfield('age'), p, submit, end_form;if(param()) { print "Hi ",em(param('name')), "You are ",em(param('age')), " years old";}print end_html;

Et en PHP ...

Page 6: WebÉducation – 10 Juin 2004

Formulaire simple en PHP<html><header><title>Form Example</title></header><body><h1>My Example Form</h1><form action="form.php" method="POST">Name: <input type="text" name="name">Age: <input type="text" name="age"></form><?PHP if($name): ?>Hi <?echo $name?>, you are <?echo $age?> years old<?endif?></body></html>

Page 7: WebÉducation – 10 Juin 2004

Historique des versions● 1994 « Personnal HomePage Tool » de Rasmus Leidorf

● Conception automne 1994● Version 1.0: Personal Home Page Tools au début 1995● Version 2.0: PHP/FI 1995-1997

● Été 1997 Zeev Suraski & Andi Gutmans (ZEND engine)

● Version 3.0: PHP 1997-2000 (Syntaxe et sémantique actuelle)● Version 4.0: PHP mid-2000 (PHP: Hypertext Preprocessor)● Version 4.1: 10 Dec 2001● Version 4.2: 22 Apr 2002 ● Version 5 Release Candidate 3: 8 juin 2004

Page 8: WebÉducation – 10 Juin 2004

PHP en bref● Le PHP est :

– À la fois un langage de programmation (Java, C#) et une plate-forme globale d'entreprise (.Net et J2EE)

– Langage mature et évolué. (OO)– Extrêmement versatile et comporte plusieurs atouts:

● Simplicité– Modèle de développement simple– Proche du style de programmation Java/C/C++

● Souplesse– Deux syntaxe ou mode: orienté scripting et orientée objet– Peut s'adapter autant à la couche présentation (WWW dynamiques)

qu'aux tâches plus complexes (applications client-serveur)● Interropérabilité

– Champion de l'intégration bas niveau: COM, JAVA, .NET pear::SOAP

– Adapté à la quasi-ensemble des moteurs de base de données...

Page 9: WebÉducation – 10 Juin 2004

PHP en bref● Oracle, SQL Serveur, MySQL, dbase,PostgreSQL, ODBC, XML, LDAP,

etc.), – Supporte de nombreux protocoles (SMTP, IMAP, FTP, HTTP, TCP, etc.)– Support des Socket (TCP/IP)➔ Repose sur des standards ouvert

● Tonnes de ressources (IDE, Modules, Classes) dont la plupart sont gratuites

● Communauté solide (SourceForge, PHP Québec, PHPBuilder)● Portabilité

– PHP est disponible sur l’ensemble des systèmes d’exploitation du marché :Windows toutes versions, Linux et Unix toutes versions,IBM iSeries (AS/400), SGI IRIX 6.5.x, RISC OS, Novell Netware, Mac OS X, AmigaOS, etc.

● Performance et stabilité– Performances et stabilité inégalées en comparaison aux langages et

plateformes utilisés dans le même but : ASP, JSP .NET

Page 10: WebÉducation – 10 Juin 2004

PHP en bref● Performance (suite)

Commande SELECT effectuée 40 fois de suites sur un serveur Microsoft SQL Server 7 en utilisant l'extension PHP's MSSQL7 extension, l'extension PHP ODBC et COM.

Page 11: WebÉducation – 10 Juin 2004

PHP en bref ● Utilisation sur l'Internet:

PHP: 15,528,732 Domains, 1,343,899 IP Addresses

Source: Netcraft

Page 12: WebÉducation – 10 Juin 2004

PHP en bref● Se prête à de multiples utilisations :

Utilisations nombreuses et variées– WebApplications(HTML, WML, XML, XHTML.) Modèle :server-side scripting

● CMS :OpenSourceCMS, phpWebSite, Mambo, XOOPS● Systèmes de gestion (Au CSF: GESCOUR, GCP+)

– Intégration à des services web reposant sur SOAP– Client-serveur (PHP-GTK et PHP4Delphi)– Ligne de commande (CLI)

Un fier compétiteur aux plateformes de développement .NET, J2EE, Oracle et plus

Page 13: WebÉducation – 10 Juin 2004

PHP en bref ● Le PHP n'est PAS :

– Un simple langage de script– Une nouveauté ou une mode passagère– Un langage réservé aux débutants et aux hobbyistes– Un langage destiné à remplacer le C/C++ (bien qu'il en soit capable dans

bien des cas)– En un mot:

« It's about getting things done. »

Page 14: WebÉducation – 10 Juin 2004

PHP: Un écosystème● L'écosystème PHP

– Architecture technique● Diversification de la faune PHP

– Outils, Classes, API, Framework, Librairies● Relations entres les différentes composantes d'un envirronnement PHP

– Fonctionnement global et modèle d'exécution● Hypertext Preprocessor?● Zend Engine● Relations Serveur HTTP et PHP et Base de donnée

– Exemples de déploiement typique● LAMP● Envirronement de développement mono-utilisateur● Envirronement de développement multi-utilisateurs● Envirronement de production

Page 15: WebÉducation – 10 Juin 2004

PHP: Un écosystème● Diversification de la faune PHP

– Extensions de l'engin● Zend Optimizer● Zend Encoder

– Framework● PEAR (PHP Extension and Application Repository)

– Une librairie structurée de code source libre pour les utilisateurs de PHP– Un système de distribution du code source et de maintenance des packages

(modules)– Des Classes PHP Fondamentales (PFC - PHP Foundation Classes)– Un style de codage pour les programmes écrit en PHP(Coding Standard)

– Extensions● PHP-GTK, PHP4DELPHI

– http://www.priadoblender.com/– Classes PDF, EXCEL (Biffwriter), très nombreuses et variées

Page 16: WebÉducation – 10 Juin 2004

PHP: Fonctionnement● Architecture Technique

Page 17: WebÉducation – 10 Juin 2004

PHP: Fonctionnement● Fonctionnement global et modèle d'exécution

● Hypertext Preprocessor?

● HYPERTEXT: Généralement, tout texte qui contient des liens à d'autres documents - des mots ou des expressions dans le document qui peut être choisi par un lecteur et qui causent un autre document d'être recherché et affiché.

➔ Contexte PHP :On travaille avec le Hyper Text Markup Language

● PREPROCESSOR : Une phase du compilateur qui examine le programme source pour des marqueurs (balise, « tags ») qui sont alors exécutés, ayant pour résultat le changement du programme source.

➔ Contexte PHP : L'interpréteur (le Zend engine) trouve et exécute le code PHP entre les balises PHP et génère un fichier HTML

Page 18: WebÉducation – 10 Juin 2004

PHP: Fonctionnement● Modèle d'exécution simplifié

● L'interpréteur exécute le code PHP entre les balises <?PHP ?> et renvoi un fichier html consommable par un navigateur standard

Page 19: WebÉducation – 10 Juin 2004

PHP: Fonctionnement● Fonctionnement global et modèle d'exécution avancé

Page 20: WebÉducation – 10 Juin 2004

PHP: Déploiement● Déploiement typique

● Environnement de développement mono-utilisateur

Page 21: WebÉducation – 10 Juin 2004

PHP: Déploiement● Déploiement typique

● Environnement de développement multi-utilisateurs

Page 22: WebÉducation – 10 Juin 2004

PHP: Déploiement● Déploiement typique

● Environnement de production

Page 23: WebÉducation – 10 Juin 2004

PHP: Déploiement● Particularité selon les installations

● Environnement de production

● Qualités recherchées● Haute disponibilité

● Stabilité

● Performance

● Sécurité

Page 24: WebÉducation – 10 Juin 2004

PHP: Déploiement● Environnement de production

● Solutions● Matérielle et logicielles : Ex. « Clustering fail-over » BeoWulf● Installer l'ensemble sur un OS stable: Ex: BSD,Linux● Utiliser les versions dites « stable » des logiciels serveurs (Apache, mySQL)

● À la limite aller chez un produit comme Oracle pour la BD si disponible● Compiler ses propres sources en incluant le support pour les extensions les plus

utilisées:• EX: ./configure' '--prefix=/usr/local/php'

'--with-apxs2=/usr/local/apache2/bin/apxs' '--with-mysql=/usr/local/mysql' '--with-ldap=/usr/local/ldap-3.3' '--with-gettext'

● Configuration réseau appropriée (firewall, ssl, DMZ)● Analyse et programmation orientée vers la sécurité

● Respecter les standards de programmation● Utiliser un modèle relations données-processus-interractions

(workflow) sécuritaire

Page 25: WebÉducation – 10 Juin 2004

PHP: Déploiement● Particularité selon les installations

● Environnement de développement multi-utilisateurs

● Qualités recherchées● Stabilité

● Sécurité

● Coopérativité

Page 26: WebÉducation – 10 Juin 2004

PHP: Déploiement● Environnement de développement multi-utilisateurs

● Solutions● Linux ou Windows au choix● Apache ou IIS au choix● Concurrent Versions System (CVS)

– Part of the open-source toolcraft, CVS is used for collaborative software configuration management on the Internet. Developers favor CVS for making current work available and also for bringing together and managing configurations using configurations developed at different locations around the world.

● Des outils afin de centraliser les ressources et encourager le coopération et le partage

● Groupware● Bibliothèques et librairies de code réeutilisable● Répertoire d'outils● Forums

● Analyse et programmation orientée vers la sécurité● Respecter les standards de programmation● Utiliser un modèle relations données-processus-interractions (workflow)

sécuritaire

Page 27: WebÉducation – 10 Juin 2004

PHP: Mini Projet➔ BUT: Monter une application web de style « Carnet d'adresse » en

utilisant la technologie PHP.➔ Outils et technologies utilisées

● Modélisation des données avec DB Designer● Utilisation d'outils (win32) MySQLFront, MySQL Administrator

&& MySQL Contro Center● NVU, PHPEdit● PHP (!), CSS, HTML, Javascript,● Et bien plus...

Page 28: WebÉducation – 10 Juin 2004

Le PHP

2e PartieDéveloppement d'une mini application

Page 29: WebÉducation – 10 Juin 2004

PHP: Mini Projet➔ BUT: Monter une application web de style « Carnet d'adresse » en

utilisant la technologie PHP.➔ Outils et technologies utilisées

● Modélisation des données avec DB Designer● Utilisation d'outils (win32) MySQLFront, MySQL Administrator

&& MySQL Contro Center● NVU, PHPEdit● PHP (!), CSS, HTML, Javascript,● Et bien plus...

Page 30: WebÉducation – 10 Juin 2004

PHP: Étapes de conceptionPlanification➔ Description du besoin et mini-analyse

● Montage d'un modèle de travail (Workflow)● Modélisation des données● Description des processus

● Modularisation du projetExécution➔ Préparation de la DB

● Configuration des accès● Insertion des données tests

Page 31: WebÉducation – 10 Juin 2004

PHP: Étapes de conception (suite)(Exécution)➔ Programmation

● Classes et librairies (OO) utilisées● Identification (Minos)● Sanitarisation des données

● Module principal● Listing● Ajout● Modification● Suppression● Recherche

● Gestion des accès appliquée (Minos)● Interaction avec la base de données

Page 32: WebÉducation – 10 Juin 2004

PHP: Un mot sur le SQL SQL Structured Query LanguageLangage développé par IBM dans les années 1970 comme étant un moyen

de placer, modifier, supprimer ou extraire de l'information logées dans un système de base de données relationnelles.

Exemple: « INSERT INTO tblClients SET NomClient = 'Pierre'; »

Pour insérer une nouvelle entrée (Pierre) dans le champ NomCLient de la table tblCLients.

« En PHP on utilise le SQL et les bases de données relationnelles pour ranger de l'informations que l'on voudra utiliser plus tard »

Principes:

Un bon modèle de données (tables, relations, etc) qui respecte les formes normales (FN) telles que définis par le modèle relationnel réduit à néant le risque de perte de données (intégrité) tout en augmentant la productivité et évite de se retrouver dans des impasses et pièges logiques.

Plus on optimise ses requêtes SQL plus le PHP et donc le système au complet s'en trouve amélioré. Des gains considérable en vitesse d'exécution sont à faire en optimisant son code au niveau des requêtes SQL.

Page 33: WebÉducation – 10 Juin 2004

PHP: PlanificationDescription des besoins

● Application accessible via un intranet● Multi-utilisateurs● Possibilité d'administration à distance● Sécuritaire● Recherche

Page 34: WebÉducation – 10 Juin 2004

PHP: PlanificationModèle de travail

● Décortiquer le problème● Module : Gestion des accès

● Sécurité● Multi-utilisateurs● Administration à distance

● Fichier journal● Paramétrages

● Module : Corps de l'application● Saisie de données

● Validation● Gestion des erreures

● Modification / Suppression de données● Recherche

Page 35: WebÉducation – 10 Juin 2004
Page 36: WebÉducation – 10 Juin 2004

PHP: PlanificationModèle de travail pour notre application:

Page 37: WebÉducation – 10 Juin 2004

PHP: Exécution

Préparation de la DB

Page 38: WebÉducation – 10 Juin 2004

PHP: Exécution

Programmation des modules principaux:

carnet.phpmodifications.php

utils.inc.php

Page 39: WebÉducation – 10 Juin 2004

PHP: Exécution

Ajout de l'authentification

index.phplogin.php

minos.class.phperreurs.php

Page 40: WebÉducation – 10 Juin 2004

PHP: Exécution

Ajout de la journalisation

log.class.php

Page 41: WebÉducation – 10 Juin 2004

PHP: Exécution

Varia

Ajustements finaux

Page 42: WebÉducation – 10 Juin 2004

PHP: Conclusion

Question et réponses

Page 43: WebÉducation – 10 Juin 2004

FIN