Tutoriel Création Site Internet


Télécharger Tutoriel Création Site Internet

★★★★★★★★★★5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Cours php pour maitriser la création site internet dynamique

PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...).

Origines de PHP

Le langage PHP a été mis au point au début d'automne 1994 par Rasmus Lerdorf. Ce langage de script lui permettait de conserver la trace des utilisateurs venant consulter son CV sur son site, grâce à l'accès à une base de données par l'intermédiaire de requêtes SQL. Ainsi, étant donné que de nombreux internautes lui demandèrent ce programme, Rasmus Lerdorf mit en ligne en 1995 la première version de ce programme qu'il baptisa Personal Sommaire Page Tools, puis Personal Home Page v1.0 (traduisez page personnelle version 1.0).

Etant donné le succès de PHP 1.0, Rasmus Lerdorf décida d'améliorer ce langage en y intégrant des structures plus avancées telles que des boucles, des structures conditionnelles, et y intégra un package permettant d'interpréter les formulaires qu'il avait développé (FI, Form Interpreter) ainsi que le support de mSQL. C'est de cette façon que la version 2 du langage, baptisée pour l'occasion PHP/FI version 2, vit le jour durant l'été 1995. Il fut rapidement utilisé sur de nombreux sites (15000 fin 1996, puis 50000 en milieu d'année 1997).

A partir de 1997, Zeev Suraski et Andi Gurmans rejoignirent Rasmus pour former une équipe de programmeurs afin de mettre au point PHP 3 (Stig Bakken, Shane Caraveo et Jim Winstead les rejoignirent par la suite). C'est ainsi que la version 3.0 de PHP fut disponible le 6 juin 1998.

A la fin de l'année 1999 la version 4.0 de PHP, baptisée PHP4, est apparue. PHP en est aujourd'hui à sa cinquième version.

...

  1. XML et PHP

Dans ce chapitre, nous allons faire une introduction à l'utilisation de documents XML (eXtensible Markup Language) avec PHP. Nous le ferons dans le contexte de l'application impôts étudiée dans le chapitre précédent.

 Fichiers XML et feuilles de style XSL

Considérons le fichier XML suivant qui pourrait représenter le résultat de simulations :

Si on le visualise avec IE 6, on obtient le résultat suivant :

IE6 reconnaît qu'il a affaire à un fichier XML (grâce au suffixe .xml du fichier) et le met en page d'une façon qui lui est propre. Avec Netscape on obtient une page vide. Cependant si on regarde le code source (View/Source) on a bien le fichier XML d'origine :

Pourquoi Netscape n'affiche-t-il rien ? Parce qu'il lui faut une feuille de style qui lui dise comment transformer le fichier XML en fichier HTML qu'il pourra alors afficher. Il se trouve que IE 6 a lui, une feuille de style par défaut lorsque le fichier XML n'en propose pas, ce qui était le cas ici.

Il existe un langage appelé XSL (eXtensible StyleSheet Language) permettant de décrire les transformations à effectuer pour passer un fichier XML en un fichier texte quelconque. XSL permet l'utilisation de nombreuses instructions et ressemble fort aux langages de programmation. Nous le détaillerons pas ici car il y faudrait plusieurs dizaines de pages. Nous allons simplement décrire deux exemples de feuilles de style XSL. La première est celle qui va transformer le fichier XML simulations.xml en code HTML. On modifie ce dernier afin qu'il désigne la feuille de style que pourront utiliser les navigateurs pour le transformer en document HTML qu'ils pourront afficher :

La commande XML

désigne le fichier simulations.xsl comme un feuille de style (xml-stylesheet) de type text/xsl c.a.d. un fichier texte contenant du code XSL. Cette feuille de style sera utilisée par les navigateurs pour transformer le texte XML en document HTML. Voici le résultat obtenu avec Netscape 7 lorsqu'on charge le fichier XML simulations.xml :

Lorsque nous regardons le code source du document (View/Source) nous retrouvons le document XML initial et non le document HTML affiché :

Netscape a utilisé la feuille de style simulations.xsl pour transformer le document XML ci-dessus en document HTML affichable. Il est maintenant temps de regarder le contenu de cette feuille de style :

Simulations de calculs d'impôts

Simulations de calculs d'impôts

mariéenfantssalaireimpôt

  • une feuille de style XSL est un fichier XML et en suit donc les règles. Il doit être en autres choses "bien formé" c'est à dire que toute balise ouverte doit être fermée.
  • le fichier commence par deux commandes XML qu'on pourra garder dans toute feuille de style XSL sous Windows :

L'attribut encoding="windows-1252" permet d'utiliser les caractères accentués dans la feuille de style.

  • La  balise    indique  à  l'interpréteur  XSL  qu'on  veut  produire  du  HTML "indenté".
  • La balise sert à définir l'élément du document XML sur lequel vont s'appliquer les instructions que l'on va trouver entre et .

................

Dans l'exemple ci-dessus l'élément "/" désigne la racine du document. Cela signifie que dès que le début du document XML va être rencontré, les commandes XSL situées entre les deux balises vont être exécutées.

  • Tout ce qui n'est pas balise XSL est mis tel quel dans le flux de sortie. Les balises XSL elles sont exécutées. Certaines d'entre-elles produisent un résultat dans le flux de sortie. Etudions l'exemple suivant :

Simulations de calculs d'impôts

Simulations de calculs d'impôts

mariéenfantssalaireimpôt

Rappelons que le document XML analysé est le suivant :

Dès le début du document XML analysé (match="/"), l'interpréteur XSL va produire en sortie le texte

Simulations de calculs d'impôts

Simulations de calculs d'impôts

mariéenfantssalaireimpôt

On remarquera que dans le texte initial on avait

et non pas

. Dans le texte initial on ne pouvait pas la balise

qui, si elle est une balise HTML valide, est néanmoins une balise XML invalide. Or nous avons affaire ici à un texte XML qui doit être "bien formé", c.a.d que toute balise doit être fermée. On écrit donc

et parce qu'on a écrit

l'interpréteur transformera le texte

en

. Derrière ce texte, viendra ensuite le texte produit par la commande XSL :

  

Nous verrons ultérieurement quel est ce texte. Enfin l'interpréteur ajoutera le texte :

La commande demande qu'on exécute le "template" (modèle) de l'élément  /simulations/simulation.  Elle  sera  exécutée  à  chaque  fois  que  l'interpréteur  XSL  rencontrera  dans  le  texte  XML analysé une balise .. ou à l'intérieur d'une balise ... A la rencontre d'une telle balise, l'interpréteur exécutera les instructions du modèle suivant :

Prenons les lignes XML suivantes :

La  ligne    correspond  au  modèle  de  l'instruction  XSL  ". L'interpréteur XSL va donc chercher à lui appliquer les instructions qui correspondent à ce modèle. Il va trouver le modèle

et va l'exécuter. Rappelons que ce qui n'est pas une commande XSL est repris tel quel par l'interpréteur XSL et que les commandes XSL sont elles remplacées par le résultat de leur exécution. L'instruction XSL

est ainsi remplacé par la valeur de l'attribut "champ" du noeud analysé (ici un noeud

). L'analyse de la ligne XML précédente va produire en sortie le résultat suivant :

XSL sortie

oui

2

200000

22504

Au total, la ligne XML

va être transformée en ligne HTML :

oui220000022504

Toutes ces explications sont un peu rudimentaires mais il devrait apparaître maintenant au lecteur que le texte XML suivant :

accompagné de la feuille de style XSL simulations.xsl suivante :



Simulations de calculs d'impôts

Simulations de calculs d'impôts

mariéenfantssalaireimpôt

produit le texte HTML suivant :

Simulations de calculs d'impôts

Simulations de calculs d'impots

mariéenfantssalaireimpôt

oui220000022504

non220000033388

Le fichier XML simulations.xml suivant

lu par un navigateur récent (ici Netscape 7) est alors affiché comme suit :

Application impôts : version 5  4.2.1Les fichiers XML et feuilles de style XSL de l'application impôts

Revenons à notre point de départ qui était l'application web impôts et rappelons que nous voulons la modifier afin que la réponse faite aux clients soit une réponse au format XML plutôt qu'une réponse HTML. Cette réponse HTML sera accompagnée d'une feuille de style XSL afin que les navigateurs puissent l'afficher. Dans le paragraphe précédent, nous avons présenté :

  • le fichier simulations.xml qui est le prototype d'une réponse XML comportant des simulations de calculs d'impôts
  • le fichier simulations.xsl qui sera la feuille de style XSL qui accompagnera cette réponse XML

Il nous faut prévoir également le cas de la réponse avec des erreurs. Le prototype de la réponse XML dans ce cas sera le fichier

erreurs.xml suivant :

erreur 1

erreur 2

La feuille de style erreurs.xsl permettant d'afficher ce document XML dans un navigateur sera la suivante :

Simulations de calculs d'impôts

Simulations de calculs d'impôts

Les erreurs suivantes se sont produites :

Cette feuille de style introduit une commande XSL non encore rencontrée : . Cette commande produit en sortie la valeur du noeud analysé, ici un noeud texte. La valeur de ce noeud est le texte compris entre les deux balises d'ouverture et de fermeture, ici texte.

Le code erreurs.xml est transformé par la feuille de style erreurs.xsl en document HTML suivant :

Simulations de calculs d'impots

Simulations de calculs d'impots

Les erreurs suivantes se sont produites :

  • erreur 1
  • erreur 2

...

 Analyse d'un document XML en PHP

La prochaine version de notre application impots va être un client programmé de l'application précédente xmlsimulations. Notre client va donc recevoir du code XML qu'il devra analyser pour en retirer les informations qui l'intéresse. Nous allons faire ici une pause dans nos différentes versions et apprendre comment on peut analyser un document XML en PHP. Nous le ferons à partir de l'exemple suivant :

dos>e:\php43\php.exe xmlParser.php syntaxe : xmlParser.php fichierXML

L'application xmlParser.php admet un paramètre : l'URI (Uniform Resource Identifier) du document XML à analyser. Dans notre exemple, cette URI sera simplement le nom d'un fichier XML placé dans le répertoire de l'application xmlParser.php. Considérons deux exemples d'exécution. Dans le premier exemple, le fichier XML analysé est le fichier erreurs.xml suivant :

erreur 1

erreur 2

L'analyse donne les résultats suivants :

dos>e:\php43\php.exe xmlParser.php erreurs.xml ERREURS

ERREUR

[erreur 1]

/ERREUR ERREUR

[erreur 2]

/ERREUR

/ERREURS

Nous n'avions pas encore écrit ce que faisait l'application xmlParser.php mais l'on voit ici qu'elle affiche la structure du document XML analysé. Le second exemple analyse le fichier XML simulations.xml suivant :

L'analyse donne les résultats suivants :

dos>e:\php43\php.exe xmlParser.php simulations.xml SIMULATIONS

SIMULATION,(MARIE,oui) (ENFANTS,2) (SALAIRE,200000) (IMPOT,22504)

/SIMULATION

SIMULATION,(MARIE,non) (ENFANTS,2) (SALAIRE,200000) (IMPOT,33388)

/SIMULATION

/SIMULATIONS

L'application xmlParser.php contient tout ce dont nous avons besoin dans notre application impots puisqu'elle a été capable de retrouver soit les erreurs, soit les simulations que pourrait envoyer le serveur web. Examinons son code :

Etudions le code se rapportant à XML. Pour analyser un document XML, notre application a besoin d'un analyseur de code XML appelé habituellement un "parseur".

// on crée un objet d'analyse de texte xml

$xml_parser=xml_parser_create();

Lorsque le parseur va analyser le document XML, il va émettre des événements tels que : j'ai rencontré le début du document, le début d'une balise, un attribut de balise, le contenu d'une balise, la fin d'une balise, la fin du document, ... Il transmet ces événements à des méthodes qu'on doit lui désigner :

// on indique quelles fonctions exécuter en début et fin de balise xml_set_element_handler($xml_parser,"startElement","endElement");

// on indique quelle fonction exécuter lors de la rencontre de données xml_set_character_data_handler($xml_parser,"afficheData");

function startElement($parser,$name,$attributs)

$parser : le parseur du document

$name : nom de l'élément analysé. Si l'élément rencontré est , on aura name="simulations".

$attributs : liste des attributs de la balise sous la forme (ATTRIBUT,valeur) où ATTRIBUT est le nom en majuscules de la balise.

function afficheData($parser,$data)

$parser : le parseur du document

$data : les données de la balise

function endElement($parser,$name)

les paramètres sont ceux de la méthode startElement.

La fonction startElement permet de récupérer les attributs de l'élément grâce au paramètre $attributs. Celui-ci est un dictionnaire des attributs de la balise. Ainsi si on a la balise suivante :

    

le dictionnaire $attributs sera le suivant : array(marie=>oui,enfants=>2,salaire=>200000,impot=>22504)

Une fois définis le parseur, et les méthodes précédentes, l'analyse d'un document se fait la fonction xml_parse :

// exploitation du fichier xml par blocs de 4096 octets while($data=fread($fp,4096)){

// analyse des données lues

if (! xml_parse($xml_parser,$data,feof($fp))){

...

}//if

}//while

function xml_parse($parser,$doc,$fin)

le parseur $parser analyse le document $doc. $doc peut être un morceau d'un document plus important. Le paramètre $fin indique si c'est le dernier morceau (true) ou non (false). Lors de l'analyse du document $doc, les fonctions définies par xml_set_element_handler sont appelées à chaque début et fin de balise. La fonction définie par xml_set_character_data_handler est elle appelée à chaque fois que le contenu d'une balise a été obtenu.

Pendant l'analyse du document XML, il peut se produire des erreurs notamment si le document XML est "mal formé" par exemple lors de l'oubli de balises de fermeture. Dans ce cas, la fonction xml_parse rend une valeur évaluée à "faux" :



if (! xml_parse($xml_parser,$data,feof($fp))){

// il s'est produit une erreur fprintf(STDERR,"erreur XML : %s à la ligne %d\n",

xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser));

// fin exit(3);

}//if

function xml_get_error_code($parser)

rend le code de la dernière erreur survenue

function xml_ error_string($code)

rend le message d'erreur associé au code passé en paramètre

function xml_ get_current_line($parser)

rend le n° de la ligne du document XML en cours d'analyse par le parseur Lorsque le document a été analysé, on libère les ressources attribuées au parseur :

// on libère les ressources occupées par l'analyseur xml xml_parser_free($xml_parser);

libération des  ressources attribuées au parseur $parser

function xml_free($parser)

Une fois ceci expliqué, le programme précédent accompagné des exemples d'exécution se comprend de lui-même.

 Application impôts : version 6  

Nous avons maintenant tous les éléments pour écrire un client programmé pour notre service d'impôts qui délivre du XML. Nous reprenons la version 4 de notre application pour faire le client et nous gardons la version 5 pour ce qui est du serveur. Dans cette application client-serveur :

  • le service de simulations du calcul d'impôts est fait par l'application xmlsimulations.php. La réponse du serveur est donc au format XML comme nous l'avons vu dans la version 5.
  • le client n'est plus un navigateur mais un client php autonome. Son interface console est celle de la version 4.

Le lecteur est invité à relire le code de l'application cltImpots.php qui était le client programmé de la version 4. Celui-ci recevait un document $document du serveur. Celui-ci était alors un document HTML. C'est maintenant un document XML. Le document HTML $document était analysé par la fonction suivante :

function getInfos($document){

// $document : document HTML

// on cherche soit la liste d'erreurs

// soit le tableau des simulations

// préparation du résultat

$impots[erreurs]=array();

$impots[simulations]=array();

........

return $impots;

}//getInfos

La fonction recevait le document HTML $document, l'analysait et rendait un dictionnaire $impots à deux attributs :

  1. erreurs : un tableau d'erreurs
  2. simulations : un tableau de simulations, chaque simulation étant elle-même un tableau à quatre éléments (marie,enfants,salaire,impot).

...

  1. Etude de cas - Gestion d'une base d'articles sur le web

Objectifs :

  • écrire une classe de gestion d'une base de données d'articles
  • écrire une application web s'appuyant sur cette classe
  • introduire les feuilles de style
  • proposer un début de méthodologie de développement pour des applications web simples
  • introduire javascript dans le navigateur client

Crédits : L'essence de cette étude de cas a été trouvée dans le livre "Les cahiers du programmeur - PHP/MySQL" de Jean-Philippe Leboeuf aux éditions Eyrolles.

Introduction

Un commerçant désire gérer les articles qu'il vend en magasin. Il a déjà chez lui une application ACCESS qui fait ce travail mais il est tenté par l'aventure du web. Il a un compte chez un fournisseur d'accès internet, fournisseur autorisant ses clients à installer des scripts PHP dans leurs dossiers personnels. Ceci leur permet de créer des sites web dynamiques. Par ailleurs, ces mêmes clients disposent d'un compte MySQL leur permettant de créer des tables pouvant servir des données à leurs scripts PHP. Ainsi le commerçant a un compte MySQL ayant pour login admarticles et mot de passe mdparticles. Il possède une base dbarticles sur laquelle il a tous les droits. Notre commerçant a donc les éléments suffisants pour mettre sa gestion d'articles sur le web. Aidé par vous qui avez des compétences dans le développement Web, il se lance dans l'aventure.

...

...

Le traitement type d'une demande d'un client

Le client interagit avec l'application grâce aux liens de la zone 2 de la page type. Ces liens seront du type suivant :

apparticles.php?action=xx&phase=y&PHPSESSID=zzzzzzzzzzzz

action désigne l'action en cours parmi les suivantes :

authentifier authentification du client

selectArticles sélection d'articles (consultation)

updateArticle modification d'un article

deleteArticle suppression d'un article

sql émission d'une requête SQL quelconque (administrateur) phase une action peut se faire en plusieurs étapes - désigne l'étape en cours

PHPSESSID jeton de session lorsque celle-ci a démarré - permet au serveur de récupérer des informations stockées dans la session lors des précédents échanges

De même l'attribut action dans les formulaires aura la même forme. Par exemple, dans la page d'accueil il y a un formulaire de login dans la zone 4. La balise HTML de ce formulaire est définie comme suit :

Haut du formulaire

Bas du formulaire

Le traitement de la demande du client est accomplie par le script principal de l'application appelé apparticles.php. Son travail est de construire la réponse au client. Il procèdera toujours de la même façon :

  1. grâce au nom de l'action et à la phase en cours, il déléguera la demande à une fonction spécialisée. Celle-ci traitera la demande et génèrera la page réponse adéquate. Pour chaque demande du client, il peut y avoir plusieurs pages réponse possibles : page1, page2, ..., pagen. Ces pages contiennent des informations qui doivent être calculées par la fonction. Ce sont donc des pages paramétrées. Elles seront générées par des scripts page1.php, page2.php, ...,pagen.php.
  2. par souci d'homogénéité, les parties variables des pages à afficher dans la zone 4 de la page type seront elles-aussi placées dans le dictionnaire $main.

Supposons qu'en réponse à une demande, le serveur doive envoyer la page pagex.php au client. Il procèdera de la façon suivante :

  • il placera dans le dictionnaire $main les valeurs nécessaires à la page pagex.php
  • il mettra dans $main['contenu'] qui désigne l'URL de la page à afficher en zone 4 de la page type, l'URL de pagex.
  • il demandera l'affichage de le page type avec l'instruction

include "main. ";

La page type sera alors affichée avec dans la zone 4 le code du script pagex.php qui sera évalué pour générer le contenu de la zone 4. On se rappellera que celle-ci est une simple cellule d'un tableau. Il ne faut donc pas que le code HTML généré par pagex.php commence par les balises , , , .... Celles-ci ont déja été émises au début de la page type.

...

Le serveur PWS

7.9.1Installation

Le serveur PWS (Personal Web Server) est une version personnelle du serveur IIS (Internet Information server) de Microsoft. Ce dernier est disponible sur les machines NT et 2000. Sur les machines win9x, PWS est normalement disponible avec le paquetage d'installation Internet Explorer. Cependant il n'est pas installé par défaut. Il faut prendre une installation personnalisée d'IE et demander l'installation de PWS. Il est par ailleurs disponibles dans le NT 4.0 Option pack for Windows 95. 



404