webÉducation – 10 juin 2004

Post on 21-Mar-2016

41 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

WebÉducation – 10 Juin 2004

Jonathan DumasTechnicien en informatiqueConseil du statut de la femme 

Téléphone : (418) 644-9200jonathan.dumas@csf.gouv.qc.ca

Le PHP

1ere PartieIntroduction au PHP

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.

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?

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 ...

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>

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

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...

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

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.

PHP en bref ● Utilisation sur l'Internet:

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

Source: Netcraft

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

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. »

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

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

PHP: Fonctionnement● Architecture Technique

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

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

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

PHP: Déploiement● Déploiement typique

● Environnement de développement mono-utilisateur

PHP: Déploiement● Déploiement typique

● Environnement de développement multi-utilisateurs

PHP: Déploiement● Déploiement typique

● Environnement de production

PHP: Déploiement● Particularité selon les installations

● Environnement de production

● Qualités recherchées● Haute disponibilité

● Stabilité

● Performance

● Sécurité

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

PHP: Déploiement● Particularité selon les installations

● Environnement de développement multi-utilisateurs

● Qualités recherchées● Stabilité

● Sécurité

● Coopérativité

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

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...

Le PHP

2e PartieDéveloppement d'une mini application

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...

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

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

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.

PHP: PlanificationDescription des besoins

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

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

PHP: PlanificationModèle de travail pour notre application:

PHP: Exécution

Préparation de la DB

PHP: Exécution

Programmation des modules principaux:

carnet.phpmodifications.php

utils.inc.php

PHP: Exécution

Ajout de l'authentification

index.phplogin.php

minos.class.phperreurs.php

PHP: Exécution

Ajout de la journalisation

log.class.php

PHP: Exécution

Varia

Ajustements finaux

PHP: Conclusion

Question et réponses

FIN

top related