programmation web - wordpress.com€¦ · il faut savoir qu'internet est un réseau composé...

262
1 Programmation Web (HTML et PHP/MySQL)

Upload: others

Post on 25-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

1

Programmation Web

(HTML et PHP/MySQL)

Page 2: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Développement web (HTML et PHP/MySQL) Généralités Les bases de HTML Installation et configuration, Référence du langage, Implantation du code, combiner HTML et PHP,

caractéristiques, variables, opérateurs, structures conditionnelles, boucles, fonctions, sessions, affichage de texte, expressions régulières, variables d'environnement, les fichiers, les fonctions, objets, classes,

Interrogation des bases de données MySQL, Syntaxe de base, fonctions, récupération des données,

interface avec PHP, administration.

Page 3: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Généralités

3

Page 4: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Comment fonctionne un site web ? Lorsque vous voulez visiter un site web, vous tapez son adresse dans votre navigateur web, que ce soit Mozilla Firefox, Internet Explorer, Opera, Safari ou un autre. Mais ne vous êtes-vous jamais demandé comment faisait la page web pour arriver jusqu'à vous ? Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux-ci peuvent être classés en deux catégories : Les clients : ce sont les ordinateurs des internautes comme vous. Votre ordinateur fait donc partie de la catégorie des clients. Chaque client représente un visiteur d'un site web. Les serveurs : ce sont des ordinateurs puissants qui stockent et délivrent des sites web aux internautes, c'est-à-dire aux clients. La plupart des internautes n'ont jamais vu un serveur de leur vie. Pourtant, les serveurs sont indispensables au bon fonctionnement du web.

4

Page 5: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Le logiciel client • appelle un serveur et émet des requêtes

Le logiciel serveur • attend les commandes des clients et fournit les ressources

Le protocole de communication dépend du type de service : • http pour le Web • smtp pour le mail • ftp pour le transfert de fichiers

Serveur requête

ressource

Architecture client/serveur Client

La plupart du temps, le serveur est dépourvu d'écran : il reste allumé et travaille tout seul sans intervention humaine, 24h/24, 7j/7

Page 6: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Chaque page du WEB (= un fichier au format HTML) a un nom unique au monde son adresse sur le web, son URL (Uniform Resource Locator)

http://www.ensat.ac.ma /public/enseignants/toto.html

préfixe indiquant le type de protocole HyperTextTransferProtocol

adresse IP du serveur WEB chemin d’accès

au fichier HTML sur le disque dur du serveur WEB

Attention : pas d’espaces entre les caractères !!

URL ?

Page 7: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

L’« interprétation » sert l’objectif d’universalité

Serveur

PC Netsc. 7.2

MAC … Linux

HTML identique

PC IE 6.0

PC IE 5.5

Page 8: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

L’architecture du Web

Le réseau matériel d’Internet

TCP/IP

HTTP

Web

HTML

CSS – Feuilles de style

Javascript VBScript Flash Java

Page 9: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Sites web « statiques » et « dynamiques »

L’interactivité du Web repose sur la capacité « dynamique » du protocole HTTP

Commençons donc par établir la distinction entre sites Web « statiques » et sites Web « dynamiques »

Page 10: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Cas d'un site statique

10

Lorsque le site est statique, le schéma est très simple. Cela se passe en deux temps :

1. Le client demande au serveur à voir une page web.

2. Le serveur lui répond en lui envoyant la page réclamée.

Sur un site statique, il ne se passe rien d'autre. Le serveur stocke des pages web et les envoie aux clients qui les demandent sans les modifier.

Page 11: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Le site Web « statique »

Serveur

Requête pour un fichier html

Document réclamé .html

Tous les documents sont dans le serveur

Page 12: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Cas d'un site dynamique

12

Lorsque le site est dynamique, il y a une étape intermédiaire : la page est générée.

Le client demande au serveur à voir une page web. Le serveur prépare la page spécialement pour le client. Le serveur lui envoie la page qu'il vient de générer.

La page web est générée à chaque fois qu'un client la réclame. C'est précisément ce qui rend les sites dynamiques vivants : le contenu d'une même page peut changer d'un instant à l'autre.

Page 13: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Le site « dynamique »

Requête pour un fichier .asp ou. php

Document réclamé .html

Le programme utilise l’information brute d’une base de données,

pour composer une page HTML

qui sera envoyée au requérant

Page 14: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Le site « dynamique »

Le programme s’exécute sur le serveur

À l’aide de langages comme :

le ASP de Microsoft (Active Server Pages), associé à la base de données Access

le PHP, très populaire surtout en milieu UNIX et Linux, associé à la base de données open source MySQL

Page 15: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

L’architecture du Web – 5

Le réseau matériel d’Internet

TCP/IP

HTTP

Web

HTML

CSS – Feuilles de style

Javascript ASP PHP

Langages de programmation des serveurs Web

Page 16: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

24/12/2018 16

Architecture du web

Programme Client

Internet

Documents

Requêtes

Machine client Documents

Programme Serveur

documents

Machine serveur

Page 17: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Les bases de HTML

17

Page 18: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

18

Introduction

Le HTML est la langue vivante du web avec sa grammaire, sa syntaxe et son vocabulaire langage à balises

Relier des documents à l ’aide de liens hypertexte (Tim Berners-Lee 1989) sur le réseau internet interfaces sur CD-ROM...

Page 19: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

19

Le World-Wide-Web

HTML & HTTP - un standard et un protocole simples La simplicité explique en partie le succès du

WWW

Page 20: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

20

“Hypertext Mark-Up Language” (HTML) Langage de “structuration de documents” Description de contenus par des éléments de formatage Liens hypertextuels (références internes et externes) Variante (sous-classe) de SGML

“Hypertext Transfer Protocol” (HTTP) Le serveur dit au browser de quel type de fichier il s’agit. Le browser tente de

représenter le contenu (il connaît au moins HTML, FTP, News, etc.) ou bien il tente de trouver une application externe locale capable d’afficher le format en question (Ex: Paint Shop Pro pour le format *.tif)

Cliquer sur un URL implique (en très simplifié) (1) Ouvrir une connexion (2) Chercher le fichier (ou bien exécuter et afficher le résultat) (3) Fermer la connexion => “statelessness” (pas de connexions permanentes!)

Page 21: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

21

Historique Le langage HTML tire son origine du langage SGML

(Standard Generalized Markup Language). Il s'agit d'un type particulier d'annotations destiné au WWW et qui correspond à une collection de styles reconnaissables par les navigateurs.

Un navigateur (en anglais "browser") est donc un logiciel qui interprète à l'écran les commandes HTML contenues dans un document accessible sur le WWW.

Page 22: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

22

Un langage en évolution

Le langage HTML est utilisé sur le WWW depuis 1990.

Version Year HTML 1991 HTML 2.0 1995 HTML 3.2 1997 HTML 4.01 1999 XHTML 2000 HTML5 2014

Page 23: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Historique HTML4 en 1999, beaucoup de changements

depuis… Cooperation entre le World Wide Web

Consortium (W3C) et le Web Hypertext Application Technology Working Group (WHATWG).

WHATWG travaillait sur de nouveaux formulaires et applications, le W3C sur XHTML 2. En 2006, ils ont décidé de coopérer pour créer HTML5.

Forte implication des industriels et fabriquants de navigateurs

Page 24: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

24

Pages HTML

Il faut d'abord spécifier qu'un document contenant des annotations en HTML n'est rien de plus qu'un fichier texte.

Il peut donc être reconnu sans problèmes de conversion d'un environnement à un autre. Une page peut donc être lue et interprétée par n'importe quel navigateur sur n'importe quelle plateforme.

Page 25: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

25

Stratégies de production HTML 1. directement rédiger un texte en utilisant des codes html. 2. utiliser un éditeur spécialisé éventuellement “Wysiwyg” (dans

la mesure où ce concept est approprié). 3. utiliser un traitement de texte comme Framemaker, Word ou

Wordperfect ou encore un langage de formatage comme Latex et ensuite traduire le texte en html.

4. générer du html à partir d’une source arbitraire comme une base de données à l’aide d’un logiciel. Ceci en temps réel ou en mode batch.

Page 26: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

26

Description d’un document html Le “html” (HyperText Markup Language) est un langage permettant de

mettre en forme du texte, des images, du sons, etc. (la liste s’allonge presque tous les jours) destinés à être visualisés grâce à un navigateur (les plus connus étant Microsoft Internet Explorer Netscape Navigator, Safari de Mac, etc.).

Ce langage de description de page utilise des marques - ou balises - pour spécifier la façon dont un élément doit apparaître, pour afficher des images ou définir des actions.

Ces marques sont toujours placées entre les signes “<” et “>” et agissent très souvent par paire : la première spécifie le début d’application du style (ou de l’action), la seconde, qui comporte le signe “/”, marque la fin d’application du style (ou de l’action).

Page 27: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

27

Attention à ne pas oublier cette marque de fin, car le style ou l’action défini est actif tant que le navigateur ne rencontre pas la marque de fin; ainsi si vous utilisez une marque “mets un italique” au début de votre document et que vous oubliez la marque “enlèves l’italique”, tout votre document apparaîtra en italique .

Remarque : les marques peuvent être saisies indifféremment en majuscule ou minuscule, tous les éditeurs de documents html, ainsi que les navigateurs, reconnaissent les deux syntaxe, l’utilisation des minuscules ou majuscules est donc un choix - une préférence - personnel

Page 28: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

28

Créer un document HTML

<HTML> "première ligne du document" <head> "ouverture de la zone d'entête" <title> "titre de la page suivi de </title>" </head> "fermeture de la zone d'entête." <body> "ouverture du corps du document" "Mettre le texte et les images ici" </body> "fin du corps du document" </HTML> "fin du document HTML"

Page 29: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

29

Au sujet de la commande <title>, il est possible d'obtenir une animation sympathique (mais inutile) à l'ouverture du document HTML en insérant plusieurs commandes <title> consécutives. Le navigateur lira successivement chaque ligne et réaffichera le nouveau titre à chaque raffraichissement.

Page 30: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

30

Formatage du texte

Entêtes (Headers) Le formatage d'une page commence généralement par le choix

et l'usage d'entêtes prédéterminées qui s'échelonnent de H1 à H6 (niveaux). La commande H1 est la plus grosse disponible et la H6 est la plus petite.

Les commandes Hx comprennent un choix de taille, le caractère gras et un retour de paragraphe.

<Hi> suivi de l'entête et de </Hi> Il n'y a pas de niveau inférieur à H6

Page 31: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

31

Autres commandes <center> suivi de « Quelquechose de centré » suivi de

</center> donne:

Quelquechose de centré <P> donne un changement de paragraphe <br> donne un simple changement de ligne

Notez ici que les commandes <P> et <BR> n'ont pas à être fermées. Vous pouvez utiliser plusieurs commandes <BR> ou <P> répétitivement pour augmenter l'espacement.

Page 32: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

32

<b></b>donne un texte en gras: texte en gras <strong></strong>donne un texte en gras également:

texte en gras <EM></EM> donne un texte en italique: texte en italique <I></I> donne également un texte en italique: texte en

italique <CITE></CITE>donne aussi un texte en italique: texte en

italique <TT></TT>donne un texte formaté avec une fonte à

espacement constant (teletype): texte formaté avec une police à espacement constant

Page 33: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

33

Texte préformaté Les annotations <pre></pre> obligent le navigateur à

afficher un texte préformaté. Le navigateur respecte alors les fins de ligne (retours de chariot).

Page 34: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

34

Augmentation ou réduction de la taille des caractères <FONT SIZE="+2"></FONT SIZE="+2"> donne un

accroissement de la grosseur affichée du texte de 2 unités:

<FONT SIZE="+4 »></FONT SIZE="+4"> donne un accroissement de la grosseur affichée du texte de 4 unités:

<FONT SIZE="-2"></FONT SIZE="-2"> donne une réduction de la grosseur affichée du texte de 2 unités:.

Page 35: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

35

La commande <BLOCKQUOTE></BLOCKQUOTE> permet d'emprisonner un paragraphe telle une citation en alinéa

La commande <STRIKE></STRIKE> permet de rayer un texte

La commande <SUB></SUB> permet d'utiliser les indices dans des formules comme dans l'exemple qui suit: H 2 O.

La commande <SUP></SUP> permet d'utiliser les exposants dans des formules

Page 36: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

36

Caractères spéciaux dans HTML Certains caractères ont une signification spécifique dans

HTML. Pour les utiliser comme tels dans une page, il faut utiliser les commandes alternatives pour les afficher correctement à l'écran. Ces commandes sont: &lt; pour: < &gt; pour: > &amp; pour: & &quot; pour: "

Page 37: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

37

À PROPOS DES ACCENTS... L'utilisation des caractères accentués sur le WWW

pose un certain nombre de problèmes car il y a plusieurs façons de traiter les caractères diacritiques.

On peut en effet utiliser une des deux méthodes suivantes: Les caractères référencés (entity references en anglais) Les caractères ISO Latin-1 (ISO-8859-1)

Page 38: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

38

Les caractères référencés Avec cette méthode, on utilise seulement le jeu de

caractères ASCII standard. Ce dernier ne contient que 127 caractères (non-

accentués) et n'utilise que sept bits sur les huit que contient Un octet (l'unité fondamentale permettant de représenter un caractère latin sur les ordinateurs).

Page 39: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

39

Si le travail de composition d'un document HTML doit être effectué sur des plateformes utilisant des encodages différents, la seule façon d'assurer l'intégrité du document lorsque celui-ci est échangé consiste à utiliser les caractères référencés. Cette situation est appelée à évoluer car l'interopérabilité entre les systèmes devient de plus en plus important.

Page 40: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

40

Images Les navigateurs HTML reconnaissent généralement deux formats

d'images; les images GIF et les images JPEG. Ces deux formats d'images sont comprimés. L'insertion d'une image est possible en tapant la commande

suivante: <img src="images/serviette50.gif"> Le segment IMG SRC indique qu'il s'agit de la source d'une image,

le premier terme entre les guillemets indique le nom du dossier où se trouve la ou les images, le deuxième terme indique le nom du fichier contenant l'image et le format de celle-ci. Une image en format GIF se termine par .GIF alors qu'une image en format JPEG se termine par .JPEG ou .JPG . La taille de l'image est déterminée par le fichier lui-même. On peut placer par exemple une grande image occupant l'ensemble de l'écran:

Page 41: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

41

Les liens Pour insérer un pointeur (lien hypertexte-hypermédia), il faut

indiquer une référence (appelée URL pour Uniform Ressource Locator) et un élément, texte ou image, visible à l'écran sur lequel on doit cliquer pour y accéder. Voici un exemple de code pour obtenir un pointeur: <A HREF="dossier/menu_du_jour.HTML">Menu du jour</A>.

Le pointeur apparaît alors en couleur contrastée et souligné dans le navigateur

Les pointeurs peuvent diriger le navigateur vers des sites HTTP, FTP, TELNET, TN3270, GOPHER ou USENET. On peut aussi entrer directement sur un fichier sur le système local ou sur un réseau local.

Page 42: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

42

Pour créer un pointeur, il s'agit tout simplement de définir le type de document dans la commande A HREF comme dans les exemples qui suivent:

Site HTTP (WWW) Le code:<A HREF="http://WWW.fsaa.ulaval.ca">Serveur WWW de

la FSAA</A>donne accès à un serveur WWW, notamment à celui de la Faculté des sciences de l'agriculture et de l'alimentation de l'Université Laval.

Site FTP Le code:<A HREF="ftp://ftp.apple.com/pub">Site FTP de la

compagnie Apple</A>donne accès à un dossier public sur un serveur FTP de la compagnie Apple inc.

Page 43: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

43

Fichier sur le système hôte Le code:<A HREF="fichier.HTML">fichier</A> donne tout

simplement accès à un fichier HTML situé au même niveau hiérarchique que le fichier actuellement ouvert sur le serveur.

Pour obtenir un document situé ailleurs sur le même serveur, il faut spécifier le sentier à suivre. Dans ce cas, on indique le chemin complet avec le code qui suit: <A HREF="http://www.grr.ulaval.ca/grrwww/glossairehtml.html">Glossaire</A>.

La commande A NAME La commande A NAME enregistre un point d'accès à l'intérieur d'un

document HTML. On peut ensuite référer directement à ce point précis avec une commande A HREF. La commande peut se taper directement comme ceci: <a name="Gopher">, ce qui indique au navigateur où se trouve la section visée. Pour se rendre à cet endroit, il faut taper la référence comme ceci: <a href="manuel8.html#Gopher">Gopher</a>.

Page 44: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

44

Tableaux Commandes de base

Les commandes de base pour créer des tableaux en HTML sont les suivantes: · <TABLE></TABLE> Cette commande est la

commande principale pour ouvrir une zone de tableaux. · <TR></TR> Commande pour définir une rangée. Il faut

utiliser une séquence <TR></TR> pour chacune des rangées requises, à l'intérieur de la zone <TABLE></TABLE> comme dans l'exemple ci-dessous:

· <TD></TD> Commande pour spécifier les données pour chaque rangée comme dans l'exemple ci-dessus. Le code pour produire ce tableau s'écrira donc:

Page 45: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

45

Structure générale d'un tableau (1) le tableau commence par la balise <TABLE>

(2) puis vient la balise <TR> qui débute la première ligne du tableau

(3) puis on trouve une balise <TD> qui ouvre la première cellule de données

(3 bis) Le texte (ou l'image) contenu dans cette cellule est tapé et mis en forme

(4) la cellule est fermée par </TD> Les étapes (3), (3bis) et (4) sont répétées autant de fois qu'il y a de

cellules dans la ligne

(5) puis la ligne est fermée par </TR> les étapes (2) à (5) sont répétées autant de fois qu'il

y a de lignes dans le tableau

(6) le tableau est terminé par la balise </TABLE>

Page 46: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

46

<TABLE> ... </TABLE>

<TABLE WIDTH="w|w%" BORDER="b" CELLPADDING="cp" CELLSPACING="cs">

WIDTH="w|w%" Largeur du tableau exprimée en pixel ou en

pourcentage de la largeur de la fenêtre (à utiliser avec prudence).

BORDER="b" Largeur de l'encadrement du tableau et des cellules

exprimée en pixels. Si une cellule est vide, il n'apparaît pas.

Page 47: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

47

<TABLE> ... </TABLE>

CELLPADDING="cp"

Marge intérieure de chaque cellule (en pixels).

CELLSPACING="cs" Espacements horizontal et vertical entre les cellules

du tableau

Page 48: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

48

Les lignes : <TR> … </TR> <TR ALIGN="LEFT|CENTER|RIGHT|JUSTIFY"

VALIGN="TOP|MIDDLE|BOTTOM"> ALIGN="LEFT|CENTER|RIGHT|JUSTIFY"

Alignement horizontal du contenu de toutes les cellules de la ligne : LEFT → à gauche (attribut par défaut) CENTER → au centre RIGHT → à droite JUSTIFY → justifié (à utiliser avec prudence !)

VALIGN="TOP|MIDDLE|BOTTOM"> Alignement vertical du contenu de toutes les cellules de la ligne :

TOP → haut de la cellule MIDDLE → centre verticalement (attribut par défaut) BOTTOM → bas de la cellule

Page 49: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

49

Les cellules : <TD> … </TD> <TD ALIGN="LEFT|CENTER|RIGHT|JUSTIFY"

VALIGN="TOP|MIDDLE|BOTTOM" COLSPAN="c" ROWSPAN="r" WIDTH="w|w%">

ALIGN="LEFT|CENTER|RIGHT|JUSTIFY" Alignement horizontal cellule par cellule (cf. <TR> …

</TR>). VALIGN="TOP|MIDDLE|BOTTOM"

Alignement vertical cellule par cellule (cf. <TR> … </TR>).

Page 50: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

50

Les cellules : <TD> … </TD>

WIDTH="w|w%" Largeur de la cellule en pixels ou en pourcentage de

la largeur du tableau. A spécifier une seule fois dans le tableau (ie pour

une seule ligne) car elle détermine la largeur de la colonne dont fait partie la cellule.

Quand cette option est omise, la largeur des cellules est calculée par rapport à celle du tableau, aux espacements et la largeur de la cellule contenant le plus de texte, colonne par colonne).

Remarques Veiller à avoir le même nombre de cellules pour

chaque ligne du tableau (en fusionner éventuellement).

Page 51: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

51

Les cellules : <TD> … </TD>

COLSPAN="c" Nombre de cellules fusionnées à l'horizontal.

Permet de disposer du texte au dessus de plusieurs colonnes.

Pour que le tableau s'affiche correctement, il faut que ligne par ligne, le nombre de cellules soit le même. Dans ce cas où une cellule est une cellule fusionnée (avec un COLSPAN), elle compte pour autant de cellule que la valeur du COLSPAN.

ROWSPAN="r" idem pour les fusions à la verticale

<TD ROWSPAN=3>

<TD COLSPAN=2>

Page 52: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

52

Un exemple de tableau complexe

Page 53: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

La programmation PHP

53

Page 54: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

La petite histoire du PHP Il a été créé en 1994 par Rasmus Lerdorf pour les besoins des pages web

personnelles (livre d’or, compteurs, etc.). A l’époque, PHP signifiait Personnal Home Page.

C’est un langage incrusté au HTML et interprété côté serveur. Il dérive du C et du Perl dont il reprend la syntaxe. Il est extensible grâce à de nombreux modules et son code source est ouvert. Comme il supporte tous les standards du web et qu’il est gratuit, il s’est rapidement répandu sur la toile.

En 1997, PHP devient un projet collectif et son interpréteur est réécrit par Zeev Suraski et Andi Gutmans pour donner la version 3 qui s’appelle désormais PHP : Hypertext Preprocessor (acronyme récursif à l’exemple du système Open Source Linux : Is Not UniX).

Il existe par ailleurs des applications web prêtes à l’emploi (PHPNuke, PHP SPIP, PHPSlash…) permettant de monter facilement et gratuitement son portail.

Page 55: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Introduction au PHP

PHP = Personal Home Pages ou PHP Hypertext Preprocessor

Langage de script interprété (non compilé)

Page 56: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Installation d’un serveur web (wampServer 2)

www.wampserver.com/download.php

56

Page 57: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Ces programmes dont nous allons avoir besoin, quels sont-ils ?

57

Apache : c'est ce qu'on appelle un serveur web. Il s'agit du plus important de tous les programmes, car c'est lui qui est chargé de délivrer les pages web aux visiteurs. Cependant, Apache ne gère que les sites web statiques (il ne peut traiter que des pages HTML). Il faut donc le compléter avec d'autres programmes. •PHP : c'est un plug-in pour Apache qui le rend capable de traiter des pages web dynamiques en PHP. En clair, en combinant Apache et PHP, notre ordinateur sera capable de lire des pages web en PHP.

•MySQL : c'est le logiciel de gestion de base de données dont je vous ai parlé en introduction. Il permet d'enregistrer des données de manière organisée (comme la liste des membres de votre site). Nous n'en aurons pas besoin immédiatement, mais autant l'installer de suite.

Logo d'Apache

Page 58: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Installation de wampServer2

58

Page 59: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

59

Page 60: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

60

Page 61: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

61

Page 62: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

62

Page 63: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

63

Page 64: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

64

Page 65: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

65

Page 66: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

66

Page 67: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

67

Page 68: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

68

Page 69: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

69

Page 70: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

70

Page 71: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Barre des tâches

71

Page 72: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

72

Page 73: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Plan

Fonctionnement interne Bases du langage Tableaux, fonctions Formulaires Fichiers Base de données Sites

Page 74: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Fonctionnement interne

Page 75: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Introduction

Le PHP permet de réaliser des sites Internet élaborés. Le HTML simple ne suffit pas à répondre aux impératifs imposés par

les dernières évolutions du Web. PHP est disponible dans plusieurs environnements, tels qu'Unix

(Linux), Windows (95, 98, NT, XP, Vista, 7 etc.) et Macintosh. PHP est un langage de programmation spécialisé dans la

génération de code, dont le langage de prédilection est le HTML. Il possède une impressionnante quantité d'outils (manipulation

d'images, traitement de fichiers, accès aux bases de données, etc.)

Page 76: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Le langage Le PHP est un langage complet, écrit en C, qui reprend une grande

partie des spécificités techniques et sémantiques de ce langage. Le moteur d'interprétation du langage lit un fichier source PHP, puis

génère un flux destination, en respectant les définitions et règles suivantes : Un bloc PHP est un groupe continu de lignes, encadré par deux

balises : <? et ?> ou <?php et ?> ou <% et %>. Toute ligne située à l'extérieur de ces balises n'est pas interprétée

et est envoyée telle quelle dans le flux de sortie. Toute ligne située à l'intérieur de ces balises est considérée comme

une instruction PHP et est donc interprétée par le moteur. Les instructions PHP n'apparaissent pas dans le résultat généré. Lorsqu'une erreur survient, un message est intégré dans le flux de

sortie, et la génération du script est interrompue.

Page 77: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Qu’est-ce que PHP

Client

Navigateur (Mozilla)

clic

Serveur (www.google.com)

Serveur web (Apache)

PHP

requête HTTP

réponse

Page 78: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

PHP ou HTML ?

HTTP

Internet

Serveur w

eb (Apache)

Nav

igat

eur w

eb (M

ozill

a)

Page 79: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

PHP ou HTML ? (2)

Code PHP : « côté serveur »

Navigateur client : HTML

Conséquence : le code source PHP est protégé

Page 80: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

80

La syntaxe de base http://php.net/download-docs.php

Quelques balises…

Page 81: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

81

Passer du HTML au PHP (1)

Lorsque PHP traite un fichier, il cherche les balises d'ouvertures et de fermetures, qui délimitent le code qu'il doit interpréter. De cette manière, cela permet à PHP d'être présent dans toutes sortes de documents, car tout ce qui se trouve en dehors des balises ouvrantes / fermantes de PHP est ignoré. Exemple 1. Code PHP dans un document HTML <p>Ceci sera ignoré.</p> <?php echo 'Alors que ceci sera analysé par PHP.'; ?> <p>Ceci sera également ignoré.</p>

Page 82: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

82

Passer du HTML au PHP (2) Vous pouvez également utiliser des structures plus avancées :

Exemple 10-2. Echappement avancé <?php if ($expression) { ?> <strong>Ceci est vrai.</strong> <?php } else { ?> <strong>Ceci est faux.</strong> <?php } ?>

Page 83: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

83

Séparation des instructions

Comme en C ou en Perl, PHP requiert que les instructions soient terminées par un point-virgule à la fin de chaque instruction. La balise fermante d'un bloc de code PHP implique automatiquement un point-virgule ; vous n'avez pas besoin d'utiliser un point-virgule pour terminer la dernière ligne d'un bloc PHP.

Page 84: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

84

Les Types

Page 85: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

85

Les types – Booléens – Entiers – Les nombres décimaux – Les chaînes de caractères – Les tableaux – Les objets – Ressources – La valeur NULL – Pseudo-types utilisés dans cette documentation – Définition du type

Page 86: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

86

Introduction PHP supporte les huit types basiques suivants :

PHP supporte quatre types scalaires : booléen entier nombre à virgule flottante chaîne de caractères

PHP supporte deux types composés : tableau objet

PHP supporte deux types spéciaux : ressource NULL

Ce manuel introduit également quelques pseudo-types pour des raisons de lisibilités : mixed nombre Callback

Habituellement, le type d'une variable n'est pas déclaré par le programmeur. Il est décidé au moment de l'exécution par PHP, en fonction du contexte dans lequel la variable est utilisée.

Page 87: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

87

Vérification de type de variable Pour vérifier la présence de certains types, n'utilisez pas gettype(), mais plutôt les fonctions is_type. Par exemple : <?php $a_bool = TRUE; // un booléen $a_str = 'foo'; // une chaîne de caractères $a_str2 = 'foo'; // une chaîne de caractères $an_int = 12; // un entier echo gettype($a_bool); // affiche "boolean" echo gettype($a_str); // affiche "string" // Ceci est un entier, on l'incrémente de 4 if (is_int($an_int)) { $an_int += 4; echo ‘an_int =' . $an_int; } // Si $bool est une chaîne, l'afficher // (Ne pas imprimer n'importe quoi). if (is_string($a_bool)) { echo 'Chaîne : ' . $a_bool;

}?>

Page 88: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

88

Convertir les types des variables Si vous voulez forcer une variable à être convertie en un certain type, vous devez transtyper (cast) la variable ou utiliser la fonction settype(). Transtypage La conversion de type en PHP fonctionne de la même manière qu'en C : le nom du type désiré est écrit entre parenthèses devant la variable à transtyper ("cast"). Settype

Affecte un type à une variable settype() force le type de la variable var en type.

Page 89: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

89

en bref ... Exemple Transtypage : <?php $foo = 10; // $foo est un entier $bar = (double) $foo; // $bar est un double ?> Exemple settype() : $foo = "5bar"; // chaîne $bar = true; // booléen settype($foo, "integer"); // $foo vaut maintenant 5 (integer) settype($bar, "string"); // $bar vaut maintenant "1" (string)

Page 90: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

90

Booléens C'est le type le plus simple. Un booléen exprime une valeur de vérité. Il peut prendre comme valeur soit TRUE soit FALSE.

<?php // == est un opérateur d'égalité // qui retourne un booléen if ($action == 'show_version') { echo 'La version est la 1.23'; } // Ceci n'est pas nécessaire if ($show_separators == TRUE) { echo "<hr />\n"; } // car vous pouvez simplement utiliser if ($show_separators) { echo "<hr />\n"; } ?>

Page 91: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Les constantes

Il est inutile de revenir sur l'intérêt des constantes.

Pour définir une constante il suffit d'utiliser l'instruction

Define exemple : define(“MACONSTANTE”, “Hello World”) ; Echo MACONSTANTE;

Page 92: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Commentaires Un script php se commente comme en C : Exemple : <?php // commentaire de fin de ligne /* commentaire sur plusieurs lignes */ # commentaire de fin de ligne comme en Shell ?> Tout ce qui se trouve dans un commentaire est ignoré. Il est conseillé de commenter

largement ses scripts.

Page 93: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

93

Les Variables

Page 94: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

94

Les variables

– Essentiel – Opérations logiques – Tableaux, fonctions – Variables pré-définies – Portée des variables – Les variables dynamiques – Variables externes à PHP

Page 95: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

95

Essentiel En PHP, les variables sont représentées par un signe dollar "$" suivi du nom de la variable. Le nom est sensible à la casse (i.e. $x != $X). Les noms de variables suivent les mêmes règles de nommage que les autres entités PHP. Un nom de variable valide doit commencer par une lettre ou un souligné (_), suivi de lettres, chiffres ou soulignés. Exprimé sous la forme d'une expression régulière, cela donne : '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' Note : Dans nos propos, une lettre peut être une des lettres minuscules (a à z) ou majuscules (A à Z) et les caractères ASCII de 127 à 255 (0x7f-0xff).

Page 96: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

96

Variables pré-définies

PHP fourni un grand nombre de variables pré-définies. Cependant, beaucoup de ces variables ne peuvent pas être présentées ici, car elles dépendent du serveur sur lequel elles tournent, de la version du serveur et de la configuration du serveur ou encore d'autres facteurs.

Page 97: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

97

Exemples de variables pré-définies - $GLOBALS : ce tableau contient toutes les variables globales définies. - $_GET : ce tableau contient toutes les variables provenant de l'URL

courante. - $_POST : ce tableau contient toutes les variables provenant d'un formulaire

en méthode post. - $_SERVER : ce tableau contient toutes les variables fournies par le serveur

Web ou le client. - $_COOKIE : ce tableau contient toutes les valeurs et noms des cookies

envoyés par le client. - $_FILES : ce tableau contient les variables fournies par le navigateur lors

d'un upload de fichier par le client. - $_ENV : ce tableau contient toutes les variables fournies par l'environnement

PHP. - $_REQUEST : ce tableau contient toutes les variables fournies par

l'intermédiaire d'un script d'entré (GET,POST,COOKIE... par exemple). - $_SESSION : ce tableau contient toutes les variables de session utilisées.

Page 98: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Opérateurs Logiques

Ils permettent de combiner plusieurs tests entre eux.

exemple : Ici $a et $b peuvent prendre les valeurs booléennes vrai ou faux.

Opérateur Exemple Résultat

and ( && ) $a and $b vrai si $a et $b sont vrai $a && $b tous les deux

or ( || ) $a or $b vrai si $a est vrai ou $b $a || $b est vrai, ou encore si $a et $b sont vrai tous les deux

not ( ! ) not $a vrai si $a est faux !$a

Page 99: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Opérateurs de Comparaison

Ils permettent de comparer les valeurs de deux variables.

exemple : Ici $a et $b sont du même type de variable.

Opérateur Exemple Résultat

== $a == $b vrai si $a est égal à $b

!= $a != $b vrai si $a est différent de $b

< $a &lt; $b vrai si $a est inférieur $b

> $a > $b vrai si $a est supérieur $b

<= $a <= $b vrai si $a est inférieur ou égal à $b

>= $a >= $b vrai si $a est supérieur ou égal à $b

Page 100: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Affichage

Les fonctions d’affichage : echo() : écriture dans le navigateur print() : écriture dans le navigateur printf([$format, $arg1, $arg2]) : écriture formatée comme en C, i.e. la chaîne de caractère est constante et contient le format d’affichage des variables passées en argument Exemples : echo ‘’Bonjour $name’’; print(‘’Bonjour $name’’); printf(‘’Bonjour %s’’, $name);

Page 101: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Tableaux, fonctions

Page 102: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Tableaux

Tableaux classiques (indicés par des entiers)

0 "via"

1 "bde"

2 "forum"

3 "jce"

$assoces = array( "via", "bde", "adr", "jce" );

echo $assoces[2]; // affiche "adr"

$rien = array();

Tableau à zéro élément :

Tableau initialisé avec 4 éléments :

On accède aux différents éléments comme d’habitude :

On peut affecter des valeurs : $assoces[2] = "forum";

Finalement, on a obtenu le tableau suivant :

On récupère sa taille avec count()

echo count( $assoces ) // affiche 4

Page 103: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Tableaux (suite)

Tentons : $assoces["informatique"] = "via"; $assoces[10000] = "adr";

On obtient tout simplement le tableau suivant :

0 "via"

1 "bde"

2 "forum"

3 "jce"

"informatique" "via"

10000 "adr"

On accède à ses éléments comme avant : echo $assoces["informatique"]; // affiche "via"

On récupère toujours sa taille avec count() echo count( $assoces ) // affiche 6

Page 104: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Exemple de tableau :

104

Page 105: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

La fonction foreach() Fonctionne comme une boucle for, mais parcourt tous les

éléments d'un tableau <html><body> <?php $bureau = array("youssef","ali","hind","sara"); foreach($bureau as $surnom) { echo "$surnom est au <i>bureau</i> de REDA<br />\n"; } ?></body></html>

<html> <body> youssef est au <i>bureau</i> de REDA<br /> ali est au <i>bureau</i> de REDA<br /> hind est au <i>bureau</i> de REDA<br /> sara est au <i>bureau</i> de REDA<br /> </body> </html>

youssef est au bureau de REDA ali est au bureau de REDA hind est au bureau de REDA sara est au bureau de REDA

Page 106: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

106

Les Expressions

Page 107: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

107

Les expressions (1) Les expressions sont la partie la plus importante de PHP. En PHP, presque tout ce que vous écrivez est une expression. La manière la plus simple de définir une expression est : "tout ce qui a une valeur". Les formes les plus simples d'expressions sont les constantes et les variables. Lorsque vous écrivez "$a = 5", vous assignez la valeur '5' à la variable $a. Bien évidemment, '5' vaut 5 ou, en d'autres termes, '5' est une expression avec pour valeur 5 (dans ce cas, '5' est un entier constant). Après cette assignation, vous pouvez considérer que $a a pour valeur 5 et donc, écrire $b = $a, revient à écrire $b = 5. En d'autres termes, $a est une expression avec une valeur de 5.

Page 108: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

108

Les expressions (2) Affectation d'expressions via les fonctions : <?php function foo () { return 5; } ?> L'opérateur conditionnel ternaire <?php $first ? $second : $third ?> Si la valeur de la première sous-expression est vraie (différente de 0), alors la deuxième sous-expression est évaluée et constitue le résultat de l'expression conditionnelle. Sinon, c'est la troisième sous-expression qui est évaluée et qui constitue le résultat de l'expression.

Page 109: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

109

Les expressions (3) PHP est un langage orienté expression, dans le sens où presque tout est une expression. Considérons l'exemple dont nous avons déjà parlé, '$a = 5'. Il est facile de voir qu'il y a deux valeurs qui entrent en jeu ici, la valeur numérique constante '5' et la valeur de la variable $a qui est mise à jour à la valeur 5. Mais, la vérité est qu'il y a une autre valeur qui entre en jeu ici et c'est la valeur de l'assignation elle-même. L'assignation elle-même est assignée à une valeur, dans ce cas-là 5. En pratique, cela signifie que '$a = 5' est une expression qui a pour valeur 5. Donc, écrire '$b = ($a = 5)' revient à écrire '$a = 5; $b = 5;' (un point virgule marque la fin d'une instruction). Comme les assignations sont analysées de droite à gauche, vous pouvez aussi bien écrire '$b = $a = 5'.

Page 110: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

110

Les expressions (4) Un autre bon exemple du langage orienté expression est la pre-incrémentation et la post-incrémentation. Ce sont les opérateurs d'incrémentation et de décrémentation. PHP ajoute les possibilités d'incrémentation et de décrémentation comme c'est le cas dans le langage C. En PHP, comme en C, il y a deux types d'opérateurs d'incrémentation (pre-incrémentation et post-incrémentation). Les deux types d'opérateur d'incrémentation jouent le même rôle (c'est-à-dire qu'ils incrémentent la variable). La différence vient de la valeur de l'opérateur d'incrémentation. L'opérateur de pre-incrémentation, qui s'écrit '++$variable', évalue la valeur incrémentée (PHP incrémente la variable avant de lire la valeur de cette variable, d'où le nom de pre-incrémentation). L'opérateur de post-incrémentation, qui s'écrit '$variable++', évalue la valeur de la variable avant de l'incrémenter (PHP incrémente la variable après avoir lu sa valeur, d'où le nom de post-incrémentation).

Page 111: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

111

Pré et post-incrémentation : exemples <?php function double($i) { return $i*2; } $b = $a = 5; /* Assigne la valeur 5 aux variables $a et $b */ $c = $a++; /* Post-incrémentation de la variable $a et assignation de la valeur à la variable $c */ $e = $d = ++$b; /* Pre-incrémentation, et assignation de la valeur aux variables $d et $e */ /* à ce niveau, les variables $d et $e sont égales à 6 */ echo "a=$a, c=$c <br/>" ; echo "e=$e, d=$d <br/>" ; $f = double($d++); /* assignation du double de la valeur de $d à la variable $f ($f vaut 12), puis incrémentation de la valeur de $d */ $g = double(++$e); /* assigne deux fois la valeur de $e après incrémentation, 2*7 = 14 to $g */ echo "f=$f, d=$d <br/>" ; echo "g=$g, e=$e <br/>" ; $h = $g += 10; /* Tout d'abord, $g est incrémentée de 10, et donc $g vaut 24. Ensuite, la valeur de $g, (24) est assignée à la variable $h, qui vaut donc elle aussi 24. */ ?>

Page 112: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

112

Les expressions (6) Pour le dernier exemple d'expression, nous allons parler des combinaisons d'opérateurs/assignation. Vous savez que si vous voulez incrémenter la variable $a d'une unité, vous devez simplement écrire '$a++'. Mais si vous voulez ajouter la valeur '3' à votre variable ? Vous pouvez écrire plusieurs fois '$a++', mais ce n'est pas la meilleure des méthodes. Une pratique plus courante est d'écrire '$a = $a + 3'. L'expression '$a + 3' correspond à la valeur $a plus 3, et est de nouveau assignée à la variable $a. Donc, le résultat est l'incrémentation de 3 unités. En PHP, comme dans de nombreux autres langages comme le C, vous pouvez écrire cela de manière plus concise, manière qui avec le temps se révélera plus claire et plus rapide à comprendre. Ajouter 3 à la valeur de la variable $a peut s'écrire '$a += 3'. Cela signifie précisément : "on prend la valeur de la variable $a, on ajoute la valeur 3 et on assigne cette valeur à la variable $a". Et pour être plus concis et plus clair, cette expression est plus rapide. La valeur de l'expression '$a += 3', comme l'assignation d'une valeur quelconque, est la valeur assignée. Il est à noter que ce n'est pas 3 mais la combinaison de la valeur de la variable $a plus la valeur 3. (c'est la valeur qui est assignée à la variable $a). N'importe quel opérateur binaire peut utiliser ce type d'assignation, par exemple '$a -= 5' (soustraction de 5 de la valeur de la variable $a), '$b *= 7' (multiplication de la valeur de la variable $b par 7).

Page 113: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

113

Les structures de contrôle

Page 114: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Structures de contrôle

Les structures de contrôle permettent de répéter certaines actions ou de soumettre certaines exécutions à des conditions. En PHP, leur syntaxe est similaire à celle du langage C. Ces structures fonctionnent pour la plupart à partir d’un test. Ce test est une expression qui doit renvoyer une valeur comprise comme un booléen. Le plus souvent, on utilisera les opérateurs logiques et de comparaison, mais il est possible d’avoir une expression complexe comprenant des appels de fonctions et des affectations de variables.

114

Page 115: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

115

Les conditions

Dans vos scripts, il sera important de pouvoir effectuer une prise de décision, et donc de poser des conditions à l’exécution de telle ou telle action.

Page 116: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

116

L’instruction : if(){} L’instruction if(){} est la structure de test la plus basique. Elle permet d’exécuter une suite d’instructions en fonction d’une condition. La condition entre parenthèses est évaluée et les instructions situées entre les accolades sont exécutées seulement si l’évaluation aboutit à TRUE

Page 117: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

117

L’instruction : if(){} En PHP, cela s’écrit de la façon suivante : if( condition ){ instructions } Exemple : <?php $age = 25; if ( $age < 18 ) { echo 'Vous êtes trop jeune pour entrer ici'; exit(); // La fonction exit() arrête l’exécution du script } ?> La condition peut être complexe ; son unique pré-requis est de renvoyer une valeur qui sera interprétée comme un booléen. Il est possible de les combiner grâce à l’opérateur && pour en faire une expression unique qui ne renverra TRUE que si les deux composantes renvoient TRUE : ($age>18 && $age<35).

Page 118: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

118

La clause else{} Nous n’avons actuellement vu que le cas où la condition est vérifiée. On peut également spécifier une suite d’instructions à exécuter lorsque la condition n’est pas réalisée, avec l’instruction else{} : if( condition ){ Instructions si la condition est vérifiée. }else{ Instructions si la condition n’est pas vérifiée. } Exemple : <?php if ($temps = = 'ensoleillé')) { echo 'Il fait beau'; }else{ echo 'Il ne fait pas beau'; } ?>

Page 119: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

L’instruction : if

119

Page 120: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

120

La clause elseif{}

Enfin, il est possible d’enchaîner une série d’instructions if (sans avoir besoin de les imbriquer) à l’aide de l’instruction elseif {}. if (condition1) { instructions si la condition1 est vérifiée. }elseif (condition2){ instructions si la condition2 est vérifiée. }elseif(condition3){ instructions si la condition3 est vérifiée. }else{ instructions si les conditions ne sont pas vérifiées. }

Page 121: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

L’instruction : if - elseif

121

Page 122: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

122

Exemple Voyons maintenant un exemple qui nous permettra d’utiliser une nouvelle fonction : la fonction mt_rand(). La fonction mt_rand() prend en argument deux paramètres, le minimum et le maximum, et fournit une valeur aléatoire comprise entre ces deux valeurs. <?php $salaire = mt_rand(1,9000) ; if ($salaire < 1000) { echo 'Vous êtes payé en dessous du SMIC'; } elseif ($salaire < 6000) { echo 'Vous êtes raisonnablement bien payé'; // On notera ici qu’il n’est pas nécessaire de répéter la // condition impliquant que le salaire est supérieur à 1000 } else { echo 'Contactez–moi, votre travail m\'intéresse !'; } ?>

Page 123: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

123

Les accolades dans les conditions Comme vous avez pu le constater, des accolades suivent la condition dans nos exemples. Il est cependant possible de s’en passer quand une seule instruction suit la condition. if( condition ) instruction; Si les accolades ne sont pas placées, seule la première instruction sera effectuée. Exemple : <?php if ($temps = = 'ensoleillé') echo 'Il fait beau'; echo ‘et chaud'; // Cette instruction sera toujours réalisée ?>

Page 124: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

124

L’instruction : switch Cette instruction permet de faire plusieurs tests sur la valeur d’une variable, ce qui évite de faire plusieurs if imbriqués et simplifie ainsi la lecture du code. <?php $nombre = mt_rand(0,4); switch ($nombre) { case 4: echo "$nombre est supérieur à 3 <br>"; case 3: echo "$nombre est supérieur à 2 <br>"; case 2: echo "$nombre est supérieur à 1 <br>"; case 1: echo "$nombre est supérieur à 0 <br>"; break ; default: echo "$nombre est 0 <br>"; } ?>

Page 125: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

125

L’instruction : switch Les parenthèses qui suivent le mot-clé switch() indiquent une expression dont la valeur est testée successivement par chacun des case. Lorsque la valeur correspond à un case, la suite d’instructions est exécutée jusqu’à la fin du switch ou l’apparition d’un break. Si aucune correspondance n’est trouvée, alors le code est exécuté à partir du mot-clé default. Une fois la correspondance trouvée, toutes les instructions sont exécutées. Il faut bien remarquer que dans notre exemple, le nombre 3 afficherait trois lignes et non pas une seule. Le rendu de l’exemple est donné à la figure :

Page 126: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

126

Les boucles

Page 127: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

127

La boucle : while Les boucles sont des structures qui permettent d’exécuter plusieurs fois une même série d’instructions en fonction d’une (ou plusieurs) condition(s). L’instruction while(){} correspond à « tant que ». Donc, on pourra exécuter des instructions tant qu’une condition sera remplie :

Page 128: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

128

La boucle : while En PHP, cela s’écrit de la façon suivante : while ( condition ){ instructions } Le programme commence par tester si la condition est vraie. La boucle while(){} exécute alors le code du programme jusqu’à ce que la condition devienne fausse. <?php $i = 1; while ( $i <= 10 ) { echo $i; $i++; } ?> La condition n’est testée qu’après exécution complète du bloc d’instructions. Si la condition est évaluable à faux avant la fin, le reste des instructions s’exécutera tout de même.

Page 129: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

129

La boucle : while L’instruction peut aussi être utilisée avec une syntaxe alternative : do { instructions } while(condition) Le programme commence par tester si la condition est vraie. La boucle while(){} exécute alors le code du programme jusqu’à ce que la condition devienne fausse. <?php $i = 1; do { echo "$i"; $i++; } while ($i <= 10); ?>

Page 130: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

130

La boucle : for La structure d’une boucle for est : for (expression1 ; condition ; expression2) { Code à exécuter}

Page 131: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

131

La boucle : for for (expression1 ; condition ; expression2) { Code à exécuter} 1) expression1 est exécutée une fois à l’entrée de la boucle pour l’initialiser. 2) La condition est testée à chaque fois qu’on se propose de repasser dans la boucle, y compris la première fois. En général, cela permet de tester un compteur. 3) expression2 est exécutée à la fin d’un passage dans la boucle. En général, on incrémente une variable qui est utilisée dans le test de la condition. Cette instruction est souvent utilisée pour des boucles de longueur déterminée puisque son utilisation s’avère assez simple.: <?php for ( $i = 2; $i <= 10 ; $i++ ) { echo "$i -"; } ?>

Page 132: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Boucle : for

Comme dans tous les autres langages

<html> <body> <?php // l'intérêt du $ for ($i=0; $i<4; $i++) { echo " Number $i <br />\n"; } ?> </body> </html>

<html> <body> Number 0 <br /> Number 1 <br /> Number 2 <br /> Number 3 <br /> </body> </html>

Number 0 Number 1 Number 2 Number 3

Fichier .php présent sur le serveur

Fichier tel qu’il est Reçu par le navigateur

Rendu

Page 133: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

133

La boucle : foreach PHP inclut une commande foreach(), comme en Perl. C’est un moyen simple de parcourir un à un les éléments d’un tableau. Il y a deux syntaxes possibles. La seconde est une extension mineure mais pratique de la première : foreach ($array as $element) instruction; foreach ($array as $key=>$element) instruction; La première syntaxe passe en revue le tableau $array. À chaque itération, la valeur de l’élément courant est assignée à $element et le pointeur interne de tableau est avancé d’un élément (ce qui fait qu’à la prochaine itération, on accédera à l’élément suivant). La deuxième forme fait exactement la même chose, mais c’est la clé de l’élément courant qui est assignée à la variable $key.

Page 134: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

134

La boucle : foreach

<?php $tab = array('prenom' => ’mohammed' , 'ville' => ’Tanger' ) ; foreach ($tab as $element) { echo "Valeur: $element<br>\n"; } foreach ($tab as $cle => $valeur) { echo "Cle : $cle; Valeur: $valeur<br>\n"; }?>

Page 135: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

135

La boucle : foreach Il est possible, depuis PHP 5, d’utiliser les valeurs par référence et non par copie. Si vous modifiez une valeur, elle sera alors modifiée dans le tableau d’origine. <?php $tab = array(1, 2, 3) ; foreach($tab as $valeur) { $valeur = $valeur – 1 ; } echo $tab[0] + $tab[1] + $tab[2] ; // Affiche 6 foreach($tab as &$valeur) { $valeur = $valeur – 1 ; } echo $tab[0] + $tab[1] + $tab[2] ; // Affiche 3 } ?>

Page 136: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

136

Les instructions d’arrêt L’instruction break permet de sortir d’une structure conditionnelle telle que for, while, foreach ou switch. <?php while (TRUE) { echo 'affiché une fois' ; } ?> Exemple 2 <?php while (TRUE) { echo 'affiché une fois' ; break ; echo 'jamais affiché' ; } ?> break accepte un argument numérique optionnel qui vous indiquera combien de structures emboîtées ont été interrompues.

Page 137: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

137

Exemple <?php for( $i=1 ; $i<=3 ; $i++) { while(TRUE) { echo 'texte affiché une fois - ' ; while(TRUE) { echo 'texte aussi affiché une seule fois – ' ; break(2) ; echo 'texte jamais affiché – ' ; } echo 'texte jamais affiché – ' ; } echo 'texte affiché une fois – ' ; break ; echo 'texte jamais affiché – ' ; } ?>

Page 138: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

138

L’instruction : continue L’instruction continue est utilisée dans une boucle afin d’éluder les instructions de l’itération courante et donc pour passer directement à la suivante. continue accepte également un argument numérique optionnel qui vous indiquera combien de structures emboîtées ont été ignorées. <?php for ($i=1; $i<=3;$i++) { // N’affiche le texte qu’une seule fois quand $i==3 if ($i !=3) continue; echo 'On en est à la troisième itération'; } ?>

Page 139: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Instructions conditionnelles

139

if (conditionA) { // instructions A } elsif (conditionB1 && conditionB2) { // instructions B } elsif (conditionC1 || conditionC2) { // instructions C } else { // instructions D }

Page 140: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Boucles

140

for ($i=0 ; $i < $n ; $i++) { // instructions } while (condition) { // instructions } do { // instructions } while (condition)

Page 141: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Tableaux

141

$tab = array("A", "B", "C"); $tab[0] = "A"; $tab[1] = "B"; $tab[2] = "C"; echo $tab[1]; // affiche "B"

for ($i = 0 ; $i < count($tab) ; $i++) { echo "La valeur $i est $tab[$i] <br />"; }

echo "<ul>"; foreach ($tab as $valeur) { echo "<li>$valeur</li>"; } echo "</ul>";

Parcours

Page 142: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Tableaux associatifs

142

$notes = array("Marie" => 14, "Paul" => 12, "Pierre" => 7); $notes["Marie"] = 14; $notes["Paul"] = 12; $notes["Pierre"] = 7;

echo "<table>"; foreach ($notes as $clef => $valeur) { echo "<tr><td>$clef</td><td>$valeur</td></tr>\n"; } echo "</table>"; Parcours echo "<table>"; reset($notes); while (next($notes)) { // il y a aussi prev $etud = key($notes); $note = current($notes); echo "<tr><td>$etud</td><td>$note</td></tr>\n"; } echo "</table>";

Page 143: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Fonctions

143

function bonjour($nom) { echo "Bonjour $nom !<br />"; } bonjour("Marie");

function somme($x, $y) { return $x + $y; } $z = somme(3, 10);

function coordonnees($ville) { ... return array($x, $y); } list($a, $b) = coordonnees("Tokyo");

Page 144: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Quelques fonctions prédéfinies

144

empty($v) teste si $v est définie et a une valeur nulle

isset($v) teste si $v est définie abs($v) valeur absolue

ceil($v) entier immédiatement supérieur floor($v) entier immédiatement inférieur round($f) arrondi

max($v1, $v2, ..., $vn) plus grande valeur min($v1, $v2, ..., $vn) plus petite valeur

rand() valeur aléatoire date($format) renvoie la date courante formatée. Exemples :

- "d/m/Y" - "H:i:s"

Page 145: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Quelques fonctions prédéfinies (chaînes, 1/2)

145

explode($sep, $chaine) divise $chaine selon le séparateur $sep et renvoie les valeurs dans un tableau

implode($sep, $tableau) regroupe les valeurs de $tableau avec le séparateur $sep et renvoir la chaîne de caractères

htmlspecialchars($ch) retourne la chaîne $ch dans laquelle les caractères réservés au HTML ('<', '>', '&'...) ont été remplacés par leur code HTML.

$fruits = "abricot|kiwi|pomme|fraise|banane"; $liste_fruits = explode('|', $fruits); $fruits2 = implode(' ', $liste_fruits); echo $fruits2 // => "abricot kiwi pomme fraise banane"

Page 146: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Quelques fonctions prédéfinies (chaînes, 2/2)

146

strlen($chaine) renvoie la taille de la chaîne de caractères

strstr($ch1, $ch2) renvoie le contenu de $ch1 à partir de la première occurrence de $ch2 (sinon, renvoie faux)

substr($ch, $i, $l) renvoie la sous-chaîne de $ch de longueur $l à partir de l'index $i

$fruits = "abricot|kiwi|pomme|fraise|banane"; $tmp = strstr($fruits, '|'); echo $tmp; // => "|kiwi|pomme|fraise|banane" $tmp2 = substr($fruits, 8, 4); echo $tmp2; // => "kiwi"

Page 147: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Quelques fonctions prédéfinies (tableaux)

147

is_array($tab) teste si $tab est un tableau count($tab) nombre d'éléments du tableau sort($tab) tri du tableau sur les valeurs, ordre ascendant rsort($tab) tri du tableau sur les valeurs, ordre

descendant ksort($tab) tri du tableau sur les clés, ordre ascendant

krsort($tab) tri du tableau sur les clés, ordre descendant max($tab) plus grande valeur min($tab) plus petite valeur

Page 148: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Transmettre des informations : méthode GET

148

<form action="script.php" method="get"> <label for="nom">Nom</label> <input type="text" name="nom" id="nom"> <label for="prenom">Prénom </label> <input type="text" name="prenom" id="nom"> <input type="submit" name="action" value="OK"> </form>

PHP HTML <html> ... <div> Bonjour <?php echo $_GET["prenom"]." ". $_GET["nom"]; ?> </div> </html>

Page 149: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Transmettre des informations : méthode POST

149

<form action="script.php" method="post"> <label for="nom">Nom</label> <input type="text" name="nom" id="nom"> <label for="prenom">Prénom </label> <input type="text" name="prenom" id="nom"> <input type="submit" name="action" value="OK"> </form>

PHP HTML <html> ... <div> Bonjour <?php echo $_POST["prenom"]." ". $_POST["nom"]; ?> </div> </html>

Page 150: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

150

Les fonctions

Page 151: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Les Fonctions

Comme dans tout langage structuré, en PHP, les fonctions sont la base d’une programmation claire et efficace. Une fonction est une sorte de sous-programme isolé du reste du code, exécutable à tout moment, depuis n’importe quelle partie du code principal ou n’importe quelle autre fonction, par simple appel. De plus, les avantages des fonctions sont : La non répétition de la même séquence de code De cet avantage découlent :

Le gain de productivité. La meilleure lisibilité du code. La maintenance facilitée.

Page 152: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Les fonctions

Définit une fonction : function fmax( $x, $y ) { if ( $x > $y ) { return $x; } else { return $y; } }

Mot clef function. Syntaxe habituelle pour les arguments. Pas de type de retour (les types n'existent pas)

echo fmax( 3, 7 ); // affiche 7

Page 153: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Déclaration, paramètres, valeurs de retour Passage par valeur par référence :

Le passage des paramètres tel qu’on l’a vu précédemment est ce que l’on appelle le passage par valeur. Il existe une autre manière de procéder : le passage par référence. On passe à la fonction la référence (adresse mémoire) d’une variable existante, et la fonction modifie directement la valeur de cette variable.

exemple : function bonjour(&$phrase) { $phrase= ‘’bonjour Toto’’ ; } $chaine = ‘’Phrase qui va disparaître’’ ; bonjour($chaine) ; echo $chaine ; // affiche 'bonjour Toto' à l’écran

Page 154: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Fonctions Mathématiques

Elles y sont toutes ! Abs, cos, sin, tan, sqrt, exp, … pi( )

Page 155: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Chaînes de caractères strpos (chaîne, sous chaîne) : retourne la position de la sous chaîne dans la

chaîne. Dans le cas où la chaîne existe en plusieurs exemplaires, c’est la position de la première occurrence qui est retournée. strrpos retourne quand à elle la position de la dernière occurrence.

strstr (chaîne, sous chaîne) retourne la portion de la chaîne à partir de la première occurrence de la sous chaîne.

foreach (nom tableau) : A chaque appel, cette fonction retourne la valeur suivante du tableau.

strlen (chaîne) : retourne la taille de la chaîne. strtolower|strtoupper (chaîne) : retourne la chaîne passée en paramètres an

minuscules (resp. majuscules). str_replace (car d’origine, car de destination, chaîne) : remplace le caractère

d’origine par le caractère de destination dans la chaîne. g supprime les caractères invisibles (espaces,\n, …) au début et à la fin de la

chaîne. ereg(chaîne à chercher, chaîne) : retourne vrai si la chaîne à chercher (sous

forme de chaîne ou sous forme d’expression régulière) est contenue dans chaîne.

Page 156: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Fonctions prédéfinies

Grand nombre de fonctions prédéfinies

Voir www.php.net pour une description exhaustive

Page 157: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Les fonction récursives

Une fonction est dite récursive si, à l’intérieur de son corps, elle s’appelle elle-même avec une valeur de paramètre différent (sinon elle boucle). Chaque appel constitue un niveau de récursivité. L’exemple le plus classique est celui de la fonction qui retourne la factorielle d’un nombre entier n. Pour calculer n!, une fonction récursive calcule n × (n – 1)!, ce qui implique un nouvel appel de la fonction factorielle et ainsi de suite jusqu’à calculer 1! (par définition 0!=1) puis on remonte jusqu’à n!.

157

Page 158: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Exemple Ce qui donne, par exemple, le code suivant : <?php

function facto($n) { if ($n==0) return 1; else {return $n*facto($n-1);} } echo "factorielle = ".facto(10);

?>

158

Page 159: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Portée des variables (0) La portée d'une variable dépend du contexte dans lequel la variable

est définie. Selon l'endroit du code où les variables sont définies, ces dernières

auront une portée plus ou moins grande, c-à-d qu'elles seront définies soit pour une parie du code (fonction) soit pour sa totalité.

Il existe trois niveaux de définition de variables : Le niveau global. Il définit des variables dans l'intégralité du code

d'une page PHP. Le niveau local. Il définit des variables propres à une fonction,

dont la durée de vie ne dépasse pas le temps de cette fonction. Le niveau static. Il définit des variables propres à une fonction,

qui persistent pendant l'intégralité du code de la page PHP.

Page 160: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

160

Portée des variables (1) Pour la majorité des variables, la portée concerne la totalité d'un script PHP. Mais lorsque vous définissez une fonction, la portée d'une variable définie dans cette fonction est locale à la fonction. Exemple : <?php $a = 1; include 'b.inc'; ?>

Ici, la variable $a sera accessible dans le script inclus b.inc.

Page 161: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

161

Portée des variables (2)

Cependant, dans les fonctions définies par l'utilisateur, une nouvelle définition de cette variable sera donnée, limitée à la fonction. Toute variable utilisée dans une fonction est par définition, locale. Par exemple : <?php $a = 1; /* portée globale */ function test() { echo $a; /* portée locale */ } test(); ?> Le script n'affichera rien à l'écran car l'instruction echo utilise la variable locale $a, et celle-ci n'a pas été assignée préalablement dans la fonction.

Page 162: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

162

Utilisation des variables global En PHP, une variable globale doit être déclarée à l'intérieur de chaque fonction afin de pouvoir être utilisée dans cette fonction. Le mot clé global : <?php $a = 1; $b = 2; function somme() { global $a, $b; $b = $a + $b; } somme(); echo $b; ?> Le script ci-dessus va afficher la valeur 3.

Page 163: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

163

Utilisation des variables $GLOBALS Une deuxième méthode pour accéder aux variables globales est d'utiliser le tableau associatif pré-défini $GLOBALS. Le précédent exemple peut être réécrit de la manière suivante : <?php $a = 1; $b = 2; function somme() {

$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } somme(); echo $b; ?> Le script ci-dessus va afficher la valeur 3. Le tableau $GLOBALS est un tableau associatif avec le nom des variables globales comme clé et les valeurs des éléments du tableau comme valeur des variables.

Page 164: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

164

Utilisation des variables static (1) Une autre caractéristique importante de la portée des variables est la notion de variable static. Une variable statique a une portée locale uniquement, mais elle ne perd pas sa valeur lorsque le script appelle la fonction. Prenons l'exemple suivant : <?php function Test() { $a = 0; echo $a; $a++; } for ($i=0;$i<10;$i++) Test(); ?> Cette fonction est un peu inutile car à chaque fois qu'elle est appelée, elle initialise $a à 0 et affiche "0". L'incrémentation de la variable ($a++) ne sert pas à grand chose, car dès que la fonction est terminée, la variable disparaît.

Page 165: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

165

Utilisation des variables static (2)

Pour faire une fonction de comptage utile, c'est-à-dire qui ne perdra pas la trace du compteur, la variable $a est déclarée comme une variable statique : <?php function Test() { static $a = 0; echo $a; $a++; } for ($i=0;$i<10;$i++) Test(); ?> Maintenant, à chaque fois que la fonction Test() est appelée, elle affichera une valeur de $a incrémentée de 1.

Page 166: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

166

Utilisation des variables static (3) Les variables statiques sont essentielles lorsque vous faites des appels récursifs à une fonction. Une fonction récursive est une fonction qui s'appelle elle-même. Il faut faire attention lorsque vous écrivez une fonction récursive car il est facile de faire une boucle infinie. Vous devez vérifier que vous avez bien une condition qui permet de terminer votre récursivité. La fonction suivante compte récursivement jusqu'à 10 : <?php function Test() { static $count = 0; echo $count++; if ($count < 10) { Test(); } } ?>

Page 167: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

167

Utilisation des variables static (4) Note : Les variables statiques doivent être déclarées comme dans l'exemple ci-dessus. Tenter d'assigner des valeurs à ces variables qui sont le résultat d'expressions causera une erreur d'analyse. <?php function foo() { static $int = 0; // correct static $int = 1+2; // faux (car c'est une expression) static $int = sqrt(121); // faux (car c'est aussi une expression) $int++; echo $int; } ?>

Page 168: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

168

Les variables dynamiques (1)

Il est pratique d'avoir parfois des noms de variables qui sont variables. C'est-à-dire un nom de variable qui est affecté et utilisé dynamiquement. Une variable classique est affectée avec l'instruction suivante : <?php $a = ’bonjour’; ?> Une variable dynamique prend la valeur d'une variable et l'utilise comme nom d'une autre variable. Dans l'exemple ci-dessous, bonjour peut être utilisé comme le nom d'une variable en utilisant le "$$" précédent la variable.

Page 169: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

169

Les variables dynamiques (2) Il est pratique d'avoir parfois des noms de variables qui sont variables. C'est-à-dire un nom de variable qui est affecté et utilisé dynamiquement. Une variable classique est affectée avec l'instruction suivante : <?php $a = ’bonjour’;

$$a = 'monde'; echo "$a $bonjour"; echo "$a ${$a}"; ?> produira le même affichage ; c'est-à-dire : bonjour monde. Afin de pouvoir utiliser les variables dynamiques avec les tableaux, vous avez à résoudre un problème ambigu. Si vous écrivez $$a[1], l'analyseur a besoin de savoir si vous parler de la variable qui a pour nom $a[1] ou bien si vous voulez l'index [1] de la variable $$a. La syntaxe pour résoudre cette ambiguïté est la suivante : ${$a[1]} pour le premier cas et ${$a}[1] pour le deuxième.

Page 170: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

170

Variables externes à PHP

Formulaires HTML (GET et POST) Lorsqu'un formulaire est envoyé à un script PHP, toutes les variables du formulaire seront automatiquement disponibles dans le script. <form action="foo.php" method="post"> Nom : <input type="text" name="username" /><br /> Email: <input type="text" name="email" /><br /> <input type="submit" name="submit" value="Envoie!" /> </form> Suivant votre configuration particulière et vos préférences, vous avez plusieurs méthodes pour accéder aux variables du formulaires.

Page 171: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

171

Variables externes à PHP <?php // Disponibles depuis &php; 4.1.0 echo $_POST['username']; echo $_REQUEST['username']; import_request_variables('p', 'p_'); echo $p_username; // Disponibles depuis &php; 3. echo $HTTP_POST_VARS['username']; // Disponibles si la directive register_globals = on. echo $username; ?> Suivant votre configuration particulière et vos préférences, vous avez plusieurs méthodes pour accéder aux variables du formulaires.

Page 172: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Exemple de formulaire

Code HTML classique : <form action="traitement.php" method="get"> <p> Âge: <input type="text" name="age" /> <br /> École: <input type="text" name="ecole" /> <input type="submit" value="OK" /> </p> </form>

Page 173: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Ce qui donne :

22

ENSAT

Page 174: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Le code PHP

On récupère les données et on les affiche (fichier traitement.php) <?php $age = $_GET["age"]; $school = $_GET["ecole"]; echo "Vous êtes de l'école $school."; echo " <br /> "; echo "Vous êtes né en ".(2011-$age)."."; ?>

Page 175: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Résultat

ENSAT. 1984.

Page 176: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Autre utilité de $_GET

Adresse : http://serveur/page.php?a=bonjour&b=bye

$_GET["a"] vaut "bonjour" $_GET["b"] vaut "bye"

Page 177: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

177

Variables externes à PHP Cookies HTTP Les cookies sont un mécanisme permettant de stocker des données sur la machine cliente à des fins d'identification de l'utilisateur. Vous pouvez établir un cookie grâce à la fonction setcookie(). Les cookies font partie intégrante des en-têtes HTTP et donc la fonction setcookie() doit être appelée avant que le moindre affichage ne soit envoyé au navigateur. C'est la même restriction que pour la fonction header(). Les données contenus dans les cookies sont alors disponibles dans les tableaux de cookies appropriés, comme $_COOKIE, $HTTP_COOKIE_VARS mais aussi $_REQUEST. Si vous souhaitez assigner plusieurs valeurs à un seul cookie, il vous faut ajouter les caractères [] au nom de votre cookie. Par exemple :

Page 178: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

178

Variables externes à PHP Cookies HTTP Les cookies sont un mécanisme permettant de stocker des données sur la machine cliente à des fins d'identification de l'utilisateur. Vous pouvez établir un cookie grâce à la fonction setcookie(). Les cookies font partie intégrante des en-têtes HTTP et donc la fonction setcookie() doit être appelée avant que le moindre affichage ne soit envoyé au navigateur. C'est la même restriction que pour la fonction header(). Les données contenus dans les cookies sont alors disponibles dans les tableaux de cookies appropriés, comme $_COOKIE, $HTTP_COOKIE_VARS mais aussi $_REQUEST. Si vous souhaitez assigner plusieurs valeurs à un seul cookie, il vous faut ajouter les caractères [] au nom de votre cookie.

Page 179: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

179

Les Expressions

Page 180: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

180

Les expressions (1) Les expressions sont la partie la plus importante de PHP. En PHP, presque tout ce que vous écrivez est une expression. La manière la plus simple de définir une expression est : "tout ce qui a une valeur". Les formes les plus simples d'expressions sont les constantes et les variables. Lorsque vous écrivez "$a = 5", vous assignez la valeur '5' à la variable $a. Bien évidemment, '5' vaut 5 ou, en d'autres termes, '5' est une expression avec pour valeur 5 (dans ce cas, '5' est un entier constant). Après cette assignation, vous pouvez considérer que $a a pour valeur 5 et donc, écrire $b = $a, revient à écrire $b = 5. En d'autres termes, $a est une expression avec une valeur de 5.

Page 181: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

181

Les expressions (2) Affectation d'expressions via les fonctions : <?php function foo () { return 5; } ?> L'opérateur conditionnel ternaire <?php $first ? $second : $third ?> Si la valeur de la première sous-expression est vraie (différente de 0), alors la deuxième sous-expression est évaluée et constitue le résultat de l'expression conditionnelle. Sinon, c'est la troisième sous-expression qui est évaluée et qui constitue le résultat de l'expression.

Page 182: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

182

Les expressions (3) PHP est un langage orienté expression, dans le sens où presque tout est une expression. Considérons l'exemple dont nous avons déjà parlé, '$a = 5'. Il est facile de voir qu'il y a deux valeurs qui entrent en jeu ici, la valeur numérique constante '5' et la valeur de la variable $a qui est mise à jour à la valeur 5. Mais, la vérité est qu'il y a une autre valeur qui entre en jeu ici et c'est la valeur de l'assignation elle-même. L'assignation elle-même est assignée à une valeur, dans ce cas-là 5. En pratique, cela signifie que '$a = 5' est une expression qui a pour valeur 5. Donc, écrire '$b = ($a = 5)' revient à écrire '$a = 5; $b = 5;' (un point virgule marque la fin d'une instruction). Comme les assignations sont analysées de droite à gauche, vous pouvez aussi bien écrire '$b = $a = 5'.

Page 183: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

183

Les expressions (4) Un autre bon exemple du langage orienté expression est la pre-incrémentation et la post-incrémentation. Ce sont les opérateurs d'incrémentation et de décrémentation. PHP ajoute les possibilités d'incrémentation et de décrémentation comme c'est le cas dans le langage C. En PHP, comme en C, il y a deux types d'opérateurs d'incrémentation (pre-incrémentation et post-incrémentation). Les deux types d'opérateur d'incrémentation jouent le même rôle (c'est-à-dire qu'ils incrémentent la variable). La différence vient de la valeur de l'opérateur d'incrémentation. L'opérateur de pre-incrémentation, qui s'écrit '++$variable', évalue la valeur incrémentée (PHP incrémente la variable avant de lire la valeur de cette variable, d'où le nom de pre-incrémentation). L'opérateur de post-incrémentation, qui s'écrit '$variable++', évalue la valeur de la variable avant de l'incrémenter (PHP incrémente la variable après avoir lu sa valeur, d'où le nom de post-incrémentation).

Page 184: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

184

Pré et post-incrémentation : exemples <?php function double($i) { return $i*2; } $b = $a = 5; /* Assigne la valeur 5 aux variables $a et $b */ $c = $a++; /* Post-incrémentation de la variable $a et assignation de la valeur à la variable $c */ $e = $d = ++$b; /* Pre-incrémentation, et assignation de la valeur aux variables $d et $e */ /* à ce niveau, les variables $d et $e sont égales à 6 */ $f = double($d++); /* assignation du double de la valeur de $d à la variable $f ($f vaut 12), puis incrémentation de la valeur de $d */ $g = double(++$e); /* assigne deux fois la valeur de $e après incrémentation, 2*7 = 14 to $g */ $h = $g += 10; /* Tout d'abord, $g est incrémentée de 10, et donc $g vaut 24. Ensuite, la valeur de $g, (24) est assignée à la variable $h, qui vaut donc elle aussi 24. */ ?>

Page 185: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

185

Les expressions (6) Pour le dernier exemple d'expression, nous allons parler des combinaisons d'opérateurs/assignation. Vous savez que si vous voulez incrémenter la variable $a d'une unité, vous devez simplement écrire '$a++'. Mais si vous voulez ajouter la valeur '3' à votre variable ? Vous pouvez écrire plusieurs fois '$a++', mais ce n'est pas la meilleure des méthodes. Un pratique plus courante est d'écrire '$a = $a + 3'. L'expression '$a + 3' correspond à la valeur $a plus 3, et est de nouveau assignée à la variable $a. Donc, le résultat est l'incrémentation de 3 unités. En PHP, comme dans de nombreux autres langages comme le C, vous pouvez écrire cela de manière plus concise, manière qui avec le temps se révélera plus claire et plus rapide à comprendre. Ajouter 3 à la valeur de la variable $a peut s'écrire '$a += 3'. Cela signifie précisément : "on prend la valeur de la variable $a, on ajoute la valeur 3 et on assigne cette valeur à la variable $a". Et pour être plus concis et plus clair, cette expression est plus rapide. La valeur de l'expression '$a += 3', comme l'assignation d'une valeur quelconque, est la valeur assignée. Il est à noter que ce n'est pas 3 mais la combinaison de la valeur de la variable $a plus la valeur 3. (c'est la valeur qui est assignée à la variable $a). N'importe quel opérateur binaire peut utiliser ce type d'assignation, par exemple '$a -= 5' (soustraction de 5 de la valeur de la variable $a), '$b *= 7' (multiplication de la valeur de la variable $b par 7).

Page 186: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

186

Chaînes de caractères

strpos (chaîne, sous chaîne) : retourne la position de la sous chaîne dans la chaîne. Dans le cas où la chaîne existe en plusieurs exemplaires, c’est la position de la première occurrence qui est retournée. strrpos retourne quand à elle la position de la dernière occurrence.

strstr (chaîne, sous chaîne) retourne la portion de la chaîne à partir de la première occurrence de la sous chaîne.

foreach (nom tableau) : A chaque appel, cette fonction retourne la valeur suivante du tableau.

strlen (chaîne) : retourne la taille de la chaîne. strtolower|strtoupper (chaîne) : retourne la chaîne passée en paramètres an

minuscules (resp. majuscules). str_replace (car d’origine, car de destination, chaîne) : remplace le caractère

d’origine par le caractère de destination dans la chaîne. g supprime les caractères invisibles (espaces,\n, …) au début et à la fin de la chaîne. ereg(chaîne à chercher, chaîne) : retourne vrai si la chaîne à chercher (sous forme de

chaîne ou sous forme d’expression régulière) est contenue dans chaîne.

Page 187: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

187

Les structures de contrôle

Page 188: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Boucles

Comme dans tous les autres langages

<html> <body> <?php // l'intérêt du $ for ($i=0; $i<4; $i++) { echo " Number $i <br />\n"; } ?> </body> </html>

<html> <body> Number 0 <br /> Number 1 <br /> Number 2 <br /> Number 3 <br /> </body> </html>

Number 0 Number 1 Number 2 Number 3

Fichier .php présent sur le serveur

Fichier tel qu’il est Reçu par le navigateur

Rendu

Page 189: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

189

Fichiers

Page 190: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

190

Gestion des fichiers

La fonction de base est la fonction fopen( ). C'est elle qui permet d'ouvrir

un fichier, que ce soit pour le lire, le créer, ou y écrire. Sa syntaxe est : entier fopen(chaine nomdufichier, chaine mode); Différents modes disponibles r : ouverture en lecture seulement w : ouverture en écriture seulement (la fonction crée le fichier s'il n'existe pas) a : ouverture en écriture seulement avec ajout du contenu à la fin du fichier (la

fonction crée le fichier s'il n'existe pas) r+ : ouverture en lecture et écriture w+ : ouverture en lecture et écriture (la fonction crée le fichier s'il n'existe pas) a+ : ouverture en lecture et écriture avec ajout du contenu à la fin du fichier (la

fonction crée le fichier s'il n'existe pas).

Page 191: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

191

Gestion des fichiers

Exemples : $fp = fopen("../fichier.txt","r"); //lecture $fp = fopen("ftp://iutbayonne.univ-pau.fr./pub/fichier.txt","w"); //écriture depuis début du fichier $fp = fopen("http://www.nexen.com/fichier.txt","a"); //écriture depuis fin du fichier

Page 192: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

192

Lecture dans un fichier < ? $monfichier = fopen(‘’monfichier.txt’’, ’’r’’) ; // ouverture en lecture if ( !($monfichier)) { print( ’’Impossible d’ouvrir le fichier ’’) ; exit ; } while ( !feof($monfichier) ) { $ligne = fgets($monfichier,255); // 255 caractères max. ou bien fin de ligne. print ‘’ $ligne <BR> ‘’ ; } fclose ($monfichier) ; ?>

Page 193: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

193

Écriture dans un fichier

< ? $monFichier = fopen(‘’monfichier.txt’’,’’ w’’) ; // ouverture en écriture if ( !($monfichier)) { print(‘’ Impossible de créer le fichier \n’’) ; exit ; } fputs($monfichier, ‘’ligne 1’’) ; // on écrit deux lignes fputs($monfichier, ‘’ligne 2’’) ; fclose($monfichier) ; // on ferme le fichier, on libère les ressources ?>

Page 194: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

194

Fonction Explode

Il est fréquent d’avoir des fichiers contenant différents champs séparés par un délimiteur quelconque. Une fonction très utile dans ces cas là est la fonction explode. Sa syntaxe est la suivante

explode (« caractère délimiteur », chaîne de donnée)

Reda | Mohamed | 27 Harris | Aziz | 28

Page 195: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

195

Fonction Explode <html> <head> <title>Exemples de Explode</title> </head> <body> <?php if (!file_exists(’’test.txt ’’)) { print "<H3><BR>Erreur, fichier manquant<BR>"; exit; } else { $fd = fopen($fic,"r"); while (!feof($fd)) { $ligne = fgets($fd,255); $tab=explode("|",$ligne); print "Nom : $tab[0]<br>"; print "Prénom : $tab[1]<br>"; print "Age : $tab[2]<br>"; } fclose($fd); } php?>

Page 196: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

196

Mail Il existe une méthode PHP permettant d’envoyer un mail

directement, sans appeler un quelconque gestionnaire de courrier. La fonction mail (ou email parfois) permet de réaliser cela. Elle

nécessite au moins trois paramètres : Le destinataire, L’objet du message, Le corps du message.

< ? mail(‘’[email protected]’’, ‘’Test de la commande mail’’, ’’Voici le corps du

mail’’) ; ?>

Enverra un mail à [email protected] avec comme sujet de mail « Test de la commande mail », et comme corps du mail : « Voici le corps du mail ».

Page 197: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

197

Formulaire/Mail

<html> <head> <title>Formulaire/Mail</title></head><body> <FORM method="POST" action="mail.php3"> <P> Adresse <INPUT TYPE=test NAME=adr_mail VALUE=""

SIZE=50 MAXLENGTH=50 </P> <input type="submit" value= »Mail"> </FORM>

Page 198: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

198

Inclure un fichier Fonction include() haut.html : <html> <head> <title>Mon site</title> </head> <body>

bas.html : <a href="mailto:[email protected]"> envoyer un mail </a> </body> </html>

page1.html : <?php include("haut.html"); ?>

<h1>Première page</h1>

blablabla

<?php include("bas.html"); ?>

Page 199: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

199

Bases de Données

Page 200: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Accès aux bases de données

• PHP propose un support natif pour un grand nombre de bases de données comme MySQL, PostgreSQL, Oracle Server, Microsoft SQL Server etc

• PHP supporte la technologie ODBC (Open DataBase Connectivity) ce qui permet de travailler avec toute base supportant cette technologie

Page 201: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Accès aux bases de données (suite)

• Quelque soit la technologie d'accès aux données utilisée, un script PHP a besoin d'effectuer les tâches suivantes pour travailler dans une base de données :

– - Se connecter à la base de données (s'identifier)

– - Créer, lire, mettre à jour ou supprimer des données

– - Se déconnecter de la base de données

Page 202: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

MySQL • MySQL est un SGBDR (Système de Gestion de

Base de Données Relationnelle) sous licence Open-Source (MySQL a été racheté par Oracle)

• MySQL utilise la technologie Client-Serveur

• Deux versions co-existent : les versions 4.x et 5.x

• C'est le SGBDR le plus utilisé sous PHP

Page 203: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

PHP.MySQL

Navigateur Internet

Client Web

Fichiers .php

Espace de stockage

Serveur http

Extension PHP HTML

PHP

Adresse de la page PHP

Contenu HTML

PHP

Librairie MySQL

Espace de stockage

Base de données MySQL

Serveur MySQL

Page 204: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

PHP.MySQL.Extensions • En PHP, Il existe trois extensions permettant de

travailler avec MySQL :

– L'extension "php_mysql" : C'est l'extension historique d'accès à MySQL

– L'extension "php_mysqli" : C'est l'extension "orientée objet" d'accès à MySQL (plus récente)

– L'extension "php_pdo" : C'est une couche d'abstraction d'accès aux bases de données. Elle permet l'accès à des bases de données, via des drivers "natifs" (MySQL, SQLServer, Oracle Server, PostgreSQL, SQLite, Informix…)

Page 205: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Connexion MySQL La connexion MySQL via PHP se fait en 2 étapes : La première étape est la connexion au serveur MySQL avec un identifiant et son mot de passe, la seconde est le choix d'une base de données de travail.

205

Page 206: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

mysql_connect() • En PHP, l'ouverture d'une connexion à un serveur

MySQL s'effectue par l'appel à la fonction mysql_connect(serveur, utilisateur, mdp)

• Cette fonction retourne un descripteur de connexion, si la connexion est ouverte; FALSE, dans le cas contraire

• En cas d'erreur, la fonction mysql_error() retourne une chaîne de caractères décrivant l'erreur rencontrée (mysql_errno() le code de l'erreur)

Page 207: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

PHP.php_mysql.Connexion (suite) • Les paramètres de la fonction "mysql_connect"

sont :

– serveur : il identifie la machine abritant le serveur MySQL (par exemple 'localhost' ou une IP)

– utilisateur : il identifie le nom de l'utilisateur cherchant à se connecter (ce doit être un utilisateur enregistré de la base MySQL)

– mdp : c'est le mot de passe de cet utilisateur

Page 208: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

mysql_close( )

• A partir d'un script PHP, la fermeture de la connexion au serveur MySQL s'effectue par l'appel à la fonction "mysql_close([connexion])"

• Le paramètre "connexion" est un descripteur de connexion ouverte. S'il n'est pas fourni, la connexion courante est fermée (! Bug WAMP !)

• Par défaut, et en l'absence de fermeture effective, toute connexion avec une base MySQL est fermée à la fin du script qui a procédé à son ouverture

Page 209: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

mysql_select_db( )

• Pour travailler avec une base de données, on sélectionne cette base par l'appel à la fonction

mysql_select_db(base [, connexion])

• Cette fonction retourne TRUE, si la base de données en question est sélectionnée; FALSE, dans le cas contraire

• Pour changer de base, il suffit d'en sélectionner une autre

Page 210: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Sélection d'une base

• Le paramètre obligatoire "base" identifie la base avec laquelle vous voulez travailler (c'est le nom de cette base)

• Le paramètre facultatif "connexion" est un descripteur de connexion ouverte avec le serveur MySQL. Si ce paramètre n'est pas fourni, la connexion courante est utilisée

• Remarque : Il n'est pas nécessaire de sélectionner une base pour travailler dans cette base…

Page 211: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

211

Bases de Données <?php $bdd= "mabase"; // Base de données $host= "localhost"; $user= "root"; // Utilisateur $pass= ""; mysql_connect($host,$user,$pass) or die ("Impossible de se connecter

à la base de données"); mysql_select_db($bdd); ?>

Page 212: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

mysql_query( )

• Pour exécuter une requête sur la base de données sélectionnée, il faut faire appel à la fonction

• mysql_query(requête [, connexion])

• Le paramètre "requête" est l'instruction SQL à exécuter : c'est une chaîne de caractères

• Le paramètre facultatif "connexion" est le descripteur de la connexion établie avec le serveur MySQL (sinon, la connexion courante est utilisée)

Page 213: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

mysql_query( ) (suite)

• La fonction "mysql_query" retourne :

– FALSE : si l'exécution de la requête a provoqué une erreur

– TRUE : si l'exécution n'a pas provoqué d'erreur et que la requête ne produit pas de données

– Un descripteur de curseur (ressource) si l'exécution n'a pas provoqué d'erreur et que la requête produit des données

Page 214: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

mysql_query( ) (suite)

• Les requêtes qui retournent des données, utilisent les instructions MySQL "SELECT", "SHOW", "EXPLAIN" et "DESCRIBE"

• Les requêtes qui ne retournent pas de données, utilisent les autres instructions MySQL : "INSERT", "UPDATE", "DELETE"…

Page 215: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

215

Requêtes SQL $query = "SELECT num, pays, date, circuit FROM $nomtable "; $result= mysql_query($query); if (mysql_error()) { print "Erreur dans la base de données :".mysql_error(); exit(); }

Page 216: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Connexion MySQL Un exemple de connexion est montré par le script connexion.php ci-dessous :

216

Page 217: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Connexion MySQL En faisant un include('connexion.php'); dans vos pages PHP, vous aurez ainsi la connexion à MySQL. ATTENTION ! il est déconseillé de mettre ces identifiants dans chaque fichier qui en a besoin,

217

Présentateur
Commentaires de présentation
ceci pour 3 raisons : D'abord parce qu'un programmeur travaille correctement ;-) Ensuite parce que vous pouvez être amené à changer de serveur (changement d'hébergement, par exemple) et vous n'aurez qu'un seul fichier à retoucher, au lieu de reprendre toutes vos pages une à une; Enfin parce qu'il vaut mieux, question sécurité, placer ce connexion.php seul dans un dossier, protégé par un htaccess : si on vous pirate votre site et que ce dossier est bien protégé, les pirates n'auront pas accès à votre base de données...
Page 218: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Connexion MySQL

218

La connexion MySQL peut être permanente ou non, et elle se termine par : mysql_close(). La connexion permanente (pconnect) n'est pas acceptée par tous les hébergeurs. Elle sert à éviter d'ouvrir une nouvelle connexion à chaque appel de ce fichier. Attention, si l'instruction mysql_close() est trouvée, vous ne pourrez plus effectuer de requête après, à moins de réouvrir une connexion.

Page 219: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

219

Récupération résultats

La fonction mysql_fetch_row($requete) retourne un tableau associatif où chaque clé correspond à chaque colonne de la table. Chaque appel produit la lecture d’un enregistrement jusqu’à ce qu’il n’y en ai plus.

Il existe d’autres fonctions pour réaliser cela, mais celle-ci est la plus rapide pour obtenir des résultats à partir d’une requête.

Page 220: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Lecture de données de MySQL

220

Page 221: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

221

Récupération résultats

while ($row=mysql_fetch_row($result)) // $result a été obtenu par le msql_query précédent.

{ // récupération des informations $num = mysql_result($rowt[0]); $pays = mysql_result($row[1]); $date = mysql_result($row[2]); $circuit = mysql_result($row[3]); print "… " ; }

Page 222: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

222

Page 223: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

PHP.php_mysql.Curseur de lecture

• L'exécution d'une requête qui retourne des données provoque la mise en place d'un curseur, coté serveur

• Ce curseur permet de parcourir les données constituées lors de l'exécution de la requête, mais enregistrement par enregistrement

• Les fonctions du type "mysql_fetch_xxxxx" permettent de lire les données de ce curseur

Page 224: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

PHP.php_mysql.Curseur de lecture (suite)

Librairie MySQL Base de données

MySQL

$curseur = mysql_query('SELECT id, nom, prenom FROM eleves', $connexion);

Curseur de lecture

Lecture du premier enregistrement produit par l'exécution de la requête : $enregistrement = mysql_fetch_xxxxx($curseur, …);

id nom prenom 1 DOUGHMI Asmae 2 KARKOURI Fatima 3 TEUDJIO Junior

Page 225: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

PHP.php_mysql.Curseur de lecture(suite)

• Quelquesfonctions "mysql_fetch_xxxx" :

– mysql_fetch_array(curseur, type) : retourne les valeurs des champs de l'enregistrement pointé par le curseur de lecture, sous la forme d'un tableau indicé (type = MYSQL_NUM) ou d'un tableau associatif (type = MYSQL_ASSOC)

– mysql_fetch_assoc(curseur) : retourne les valeurs des champs de l'enregistrement pointé par le curseur de lecture, sous la forme d'un tableau associatif (les clés sont les noms des colonnes)

– mysql_fetch_row(curseur) : retourne les valeurs des champs de l'enregistrement pointé par le curseur de lecture, sous la forme d'un tableau indicé

Page 226: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

PHP.php_mysql.Curseur de lecture(suite)

• Les fonction "mysql_fetch_xxxx" retournent FALSE lorsqu'il n'y a pas, ou plus, de données à lire dans un curseur

• Il est conseillé de libérer les ressources utilisées par un curseur sur le serveur : l'appel à la fonction mysql_free_result(curseur) les libèrent

• Le paramètre "curseur" est le descripteur de curseur, récupéré lors de l'appel à la fonction "mysql_query", dont vous voulez libérer les ressources

Page 227: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

PHP.php_mysql.Exemple

$connexion = mysql_connect('localhost', 'root',

''); mysql_select_db('ginf1', $connexion);

$sql = 'SELECT id, nom, prenom FROM eleves'; $curseur = mysql_query($sql, $connexion);

while ($enregistrement = mysql_fetch_assoc($curseur)) {

echo echo echo

'id = ',$enregistrement['id']; 'prenom = ',$enregistrement['prenom']; 'nom = ',$enregistrement['nom']';

}

mysql_free_result($curseur);

mysql_close($connexion);

// Facultatif

// Facultatif

Page 228: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

PHP.php_mysql.fonctions diverses

• mysql_num_rows() : Retourne le nombre d'enregistrements présents dans un curseur

• mysql_affected_rows() : Retourne le nombre de lignes "impactées" par la dernière requête

• mysql_insert_id() : Retourne le dernier identifiant créé du type AUTO_INCREMENT

• mysql_real_escape_string() : Ajoute des caractères de contrôles (antislash) à une chaîne

Quelques fonctions MySQL à connaître

Page 229: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce
Page 230: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Introduction Deux ordinateurs reliés par une connexion Internet. Upload est une opération consiste a faire passer un fichier de l'ordinateur du visiteur vers le serveur.

Page 231: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Avant d'uploader les fichiers via PHP, il faut prendre en consideration quelques paramètres qui se trouvent dans php.ini.

/usr/local/php /usr/local/php/lib/php.ini

Configuration

Page 232: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

file_uploads(boolean) : Autorise ou non le chargement de fichiers par HTTP upload_tmp_dir(String) : Le répertoire temporaire utilisé pour stocker les fichiers lors du chargement. Si non spécifié, PHP utilisera celui par défaut du système. upload_max_filesize(Integer) : La taille maximale en octets d'un fichier à charger. Sa valeur est indiquè en octet(entier), sinon on peux utiliser la notation sténographique. post_max_size(Integer) : la taille maximale des données reçues par la méthode POST. Cette option affecte également les fichiers chargés. memory_limit(integer) : la mémoire limite qu'un script est autorisé à allouer. max_input_time(Integer) : la durée maximale pour analyser les données d'entrée, via POST, GET et téléchargement de fichier. max_execution_time (Integer) : le temps maximal d'exécution d'un script, en Sec.

Configuration

Page 233: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Création du formulaire: Pour envoyer un fichier au serveur par formulaire, il faut préciser l'enctype, c'est à dire le type d'encodage du fichier. L'enctype à utiliser est multipart/form-data. <form method="POST" action="upload.php" enctype="multipart/form-data"> <!-- Le contenu du formulaire est à placer ici... --> </form>

Transfert Des Fichiers

Page 234: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Champ Fichier : Pour trouver le fichier, il faut permettre à l'utilisateur de choisir un fichier sur son disque dur en utilisant un champ du type File. <input type="File" name="user_file"> Limiter la taille du fichier Il faut créer un champ caché, sous le nom "MAX_FILE_SIZE" et dont la valeur est la taille maximale du fichier à uploader en octets.

<input type="hidden“ name="MAX_FILE_SIZE" value="100000">

Transfert Des Fichiers

Page 235: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Mécanisme du récupération: PHP s'occupe des données envoyées par le formulaire:

Les champs textuels (text, checkbox, select, textarea, ...) sont

copiés dans le tableau superglobal $_POST Les informations concernant les champs de type file sont

enregistrées dans le tableau superglobal $_FILES Les fichiers sont temporairement placés dans le dossier

temporaire du serveur

Récupération et Traitement

Page 236: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Mécanisme du récupération: Les informations sur les fichiers envoyés sont contenues

dans le tableau global $_FILES contient : VARIABLE NOM

$_FILES[‘user_file']['name'] Le nom original du fichier, tel que sur la machine du client.

$_FILES[‘user_file']['tmp_name'] Le nom temporaire du fichier qui sera chargé sur la machine serveur

$_FILES[‘user_file']['size'] La taille, en octets, du fichier téléchargé.

$_FILES[‘user_file’]['type'] Le type MIME du fichier. Par exemple : « application/pdf »

$_FILES[‘user_file']['error'] Le code d'erreur associé au téléchargement du fichier

Récupération et Traitement

Page 237: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

UPLOAD_ERR_OK (valeur =0): Aucune erreur, le téléchargement est correct UPLOAD_ERR_INI_SIZE (valeur=1): Le fichier téléchargé excède la taille de upload_max_filesize , configurée dans le php.ini. UPLOAD_ERR_FORM_SIZE (valeur=2): Le fichier téléchargé excède la taille de MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML. UPLOAD_ERR_PARTIAL (valeur=3) : Le fichier n'a été que partiellement téléchargé. UPLOAD_ERR_NO_FILE (valeur=4) : Aucun fichier n'a été téléchargé. UPLOAD_ERR_NO_TMP_DIR (valeur=6): Un dossier temporaire est manquant. UPLOAD_ERR_CANT_WRITE (valeur=7): Échec de l'écriture du fichier sur le disque.

Récupération et Traitement

Page 238: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Upload: Lorsque le formulaire est envoyé, le fichier est envoyé sur le serveur dans un répertoire temporaire. Après il faut le stocker d’une manière permanente dans un répertoire a l’aide des fonctions: is_upload_file() , move_uploaded_file() Exemple

$counter++; // persistent variable $my_name = "image_$counter"; if (is_uploaded_file($temp_name)) { move_uploaded_file($temp_name, "/web/images/$my_name"); } else { die("There was a problem processing the file."); }

N.B : il faut accordé les droits d'écriture au répertoire(chmod pour

Linux).

Récupération et Traitement

Page 239: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Le type de fichier : Par exemple, un génie essaie d’uploader un fichier PHP qui

permet de récupérer des informations depuis notre serveur.

La taille maximum de fichier:

Un utilisateur peut enregistrer le formulaire sur son disque et

modifier la valeur du champ "MAX_FILE_SIZE" .

Sécurité

Page 240: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce
Page 241: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Chargement de fichiers (I) Les formulaires permettent de transmettre des informations sous forme de chaînes de caractères. Ils peuvent aussi permettre à un internaute de transmettre un fichier vers le serveur.

C’est la balise HTML suivante : <input type=‘’file’’ /> qui permet le chargement de fichiers. La balise FORM doit nécessairement posséder l’attribut ENCTYPE de valeur ‘’multipart/form-data’’. La méthode utilisée sera POST. De plus, il est utile d’imposer au navigateur une taille de fichier limite par le paramètre MAX_FILE_SIZE dont la valeur numérique a pour unité l’octet.

Exemple : echo ‘’<form action=\‘’$PHP_SELF\’’ method=\‘’POST\’’ ENCTYPE=\‘’multipart/form-data\’’>\n <input type=\‘’hidden\’’ name=\‘’MAX_FILE_SIZE\’’ value=\‘’1024000\’’ />\n <input type=\‘’file\’’ name=\‘’mon_fichier\’’ /><br />\n <input type=\‘’submit\’’ value=\‘’envoyer\’’ />\n </form>\n’’;

241

Page 242: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Chargement de fichiers (II)

242

Exemple du cas du chargement de ce qui doit être une image GIF de moins de 1024.000 octets :

// création d’une variable contenant toutes les infos utiles $file = $_FILES[‘mon_fichier‘]; // si un fichier a bel et bien été envoyé : if($file || ($file != ‘’none’’)) {

// extraction du nom du fichier temporaire sur le serveur : $file_tmp = basename($file[‘tmp_name’]); // vérification de la taille et du type MIME if(($file[‘size’] <= 1024000) || ereg(‘’gif$’’,$file[type]))

// nouveau nom, emplacement et extension du fichier : $file_def = $dir.’/’.$name.’.’.$ext; // copie du fichier temporaire dans son nouvel emplacement : copy($file_tmp, $file_def);

} }

Page 243: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Chargement de fichiers (III)

243

Il est important de vérifier avec is_file() si un fichier du même nom existe déjà sur le serveur à l’emplacement où on veut copier le nouveau fichier. On pourra supprimer l’ancien fichier avec unlink() (qui ne fonctionne pas avec les serveurs fonctionnant sous Windows). basename() permet de connaître le nom du fichier à partir de son chemin (+nom) complet.

Même si le paramètre MAX_FILE_SIZE est inclus dans le formulaire, il est important de vérifier la taille du fichier réceptionné car rien n’empêche un internaute malveillant de modifier en local sur sa machine le formulaire pour y soustraire le champs caché MAX_FILE_SIZE afin de saturer le serveur avec des fichiers trop volumineux.

La vérification du type MIME du fichier est également importante dans le cas où on ne souhaite réceptionner que des types de fichiers bien particuliers (des images GIF, JPEG ou PNG par exemple).

Page 244: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Chargement de fichiers (IV) Pour charger simultanément plusieurs fichiers, il suffit de rajouter des crochets au nom du champ HTML file, et de mettre autant de champs file que désiré.

Exemple : <input type=‘’file’’ name=‘’mes_fichiers[ ]’’ /> <input type=‘’file’’ name=‘’mes_fichiers[ ]’’ /> <input type=‘’file’’ name=‘’mes_fichiers[ ]’’ /> <input type=‘’file’’ name=‘’mes_fichiers[ ]’’ />

Dans cet exemple, l’internaute pourra charger jusqu’à quatre fichiers.

244

Page 245: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Chargement de fichiers (V)

245

A la réception, la variable $HTTP_POST_FILES sera un tableau de tableaux associatifs.

Exemple : $files_tab = $_FILES[‘mes_fichiers’]; foreach($files_tab as $file) { /* faire le traitement vu précédemment : -extraire le nom du fichier temporaire sur le serveur -vérifier la taille et le type MIME -donner un nouveau nom, emplacement et extension du fichier -copier le fichier temporaire dans son nouvel emplacement */ }

Les fichiers temporaires sont généralement placés dans le répertoire /tmp du serveur. C’est la directive de configuration upload_tmp_dir du fichier php.ini qui détermine l’emplacement des fichiers chargés par la méthode POST.

Page 246: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Chargement de fichiers (VI) On aurait pu procéder autrement qu’avec des crochets, en utilisant directement dans le formulaire HTML des champs file de noms complètement différents.

Exemple : <input type=‘’file’’ name=‘’mon_fichier’’ /> <input type=‘’file’’ name=‘’mon_autre_fichier’’ />

Par contre, à la réception, on ne peut plus utiliser de boucle !

Exemple : $file = $_FILES[‘mon_fichier’]; // puis faire le traitement vu précédemment $file = $_FILES[‘mon_autre_fichier’]; // puis refaire encore le même traitement

L’approche utilisant des crochets convient au cas où le nombre de fichiers à charger est dynamique (non connu à l’avance, dépend de paramètres divers).

Page 247: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Chargement de fichiers (VII)

247

Pour les versions PHP 3 supérieures à la 3.0.16, PHP4 supérieures à la 4.0.2, il existe une autre méthode, plus simple :

Exemple 1 : // vérification que le fichier a bien été envoyé par la méthode POST if (is_uploaded_file($mon_fichier)) { // déplace le fichier dans le répertoire de sauvegarde copy($userfile, $dest_dir); }

Exemple 2 : /* déplace directement le fichier dans le répertoire de sauvegarde en faisant les vérifications nécessaires */ move_uploaded_file($mon_fichier, $dest_dir);

Page 248: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Les sessions et les bases de Données

248

Page 249: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

249

Session (1) Une session est en fait un fichier conservé sur le serveur et accessible à vos scripts en fonction d'un identifiant généré à la création. Chaque fois qu'un de vos visiteurs génère une session, un identifiant lui est attribué. Tout ce qui est dans cette session est accessible de partout à vos scripts. On comprend dès lors très vite tout l'intérêt de la chose. En effet, si chaque session est propre à un visiteur, on peut personnaliser nos scripts en fonction du visiteur, ou encore alléger nos requêtes : plutôt que d'aller chercher un pseudonyme dans la base de donnée sur chaque page, vous le rapatriez à l'arrivée du visiteur sur le site, vous le stockez en session et c'est de là que vous y accéderez par la suite.

Page 250: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

250

Sessions (2) session_start();

Cette fonction sert à démarrer une session OU appeler la session existante. Elle doit donc être présente sur toutes les pages de votre site. A savoir que cette fonction ne tolère pas d'envoi au navigateur avant elle. Plus simplement il ne faut aucune sortie avant elle : pas de html, pas de echo. Prenez l'habitude de la placer au début du fichier, avant quoi que ce soit d'autre et tout se passera bien.

session_destroy();

Cette fonction détruit la session en cours. Mais elle ne détruit pas les variables de sessions associées à la session courante. Nous verrons plus loin comment détruire une session complètement et proprement.

$_SESSION Il s'agit du tableau global contenant toutes les variables de sessions pour la session courante.

Page 251: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

251

Etude de cas concret <html> <head> <title>Connexion au site</title> </head> <body> <form method="post" action="verifLogin.php"> <table border="0" width="400" align="center"> <tr> <td width="200"><b>Vôtre login</b></td> <td width="200"> <input type="text" name="login"> </td> </tr> <tr> <td width="200"><b>Vôtre mot de passe<b></td> <td width="200"> <input type="password" name="password"> </td> </tr> <tr> <td colspan="2"> <input type="submit" name="submit" value="login"> </td> </tr> </table> </form> </body> </html>

Page 252: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

252

<?php // On démarre la session session_start(); include("connection/c.php");

mysql_select_db(“mabase”); $loginOK = false; // cf Astuce

// On n'effectue les traitements qu'à la condition que // les informations aient été effectivement postées

if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) { //extract($_POST); // je vous renvoie à la doc de cette fonction $login=$_POST["login"];

$password=$_POST["password"]; // On va chercher le mot de passe afférent à ce login $sql = "SELECT pseudo, age, sexe, ville, mdp FROM user WHERE login = '".addslashes($login)."'"; $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql); // On vérifie que l'utilisateur existe bien if (mysql_num_rows($req) > 0) { $data = mysql_fetch_assoc($req); // On vérifie que son mot de passe est correct if ($password == $data['mdp']) { $loginOK = true; } } } // Si le login a été validé on met les données en sessions if ($loginOK) { $_SESSION['pseudo'] = $data['pseudo']; $_SESSION['age'] = $data['age']; $_SESSION['sexe'] = $data['sexe']; $_SESSION['ville'] = $data['ville'];

header(‘Location:affichinfo.php’); } else { echo 'Une erreur est survenue, veuillez réessayer !'; } ?>

Page 253: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

253

Code de la page affichInfo.php

<?php // On appelle la session session_start(); // On affiche une phrase résumant les infos sur l'utilisateur courant echo 'Pseudo : ‘.$_SESSION['pseudo'].'<br />' .'Age : ‘.$_SESSION['age'].'<br />' .'Sexe : ‘.$_SESSION['sexe'].'<br />' .'Ville : ‘.$_SESSION['ville'].'<br />'; ?>

Page 254: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

<html> <head> <title>Upload des fichiers</title> </head> <body> <!-- Le type d'encodage des données, enctype, DOIT être spécifié comme ce qui suit --> <form enctype="multipart/form-data" action="envoyer.php" method="post"> <!-- MAX_FILE_SIZE doit précéder le champ input de type file --> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <!-- Le nom de l'élément input détermine le nom dans le tableau $_FILES --> Envoyez ce fichier : <input name="userfile" type="file" /> <input type="submit" value="Envoyer le fichier" /> </form> <body> </html>

254

Page 255: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

<?php // Dans les versions de PHP antiéreures à 4.1.0, la variable $HTTP_POST_FILES // doit être utilisée à la place de la variable $_FILES. $uploaddir = '/var/www/uploads/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); echo '<pre>'; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { echo "Le fichier est valide, et a été téléchargé avec succès. Voici plus d'informations :\n"; } else { echo "Attaque potentielle par téléchargement de fichiers. Voici plus d'informations :\n"; } echo 'Voici quelques informations de débogage :'; print_r($_FILES); echo '</pre>';

255

Page 256: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

256

Notez

Notez que le session_start() est toujours présent. En effet il faut préciser au script que nous allons utiliser une session. C'est l'interpréteur qui va déterminer s'il faut en démarrer une ou sélectionner celle existante. Bien entendu ce script n'a qu'une utilité réduite, à vous de voir quelles pourraient être les multiples façons de profiter des sessions.

Page 257: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

257

3 . Déconnexion

Il s'agit là d'un point important. En effet une session reste ouverte tant que le visiteur ne ferme pas son navigateur. Vous devez lui offrir la possibilité de se déloguer d'une autre manière. Il vous suffit en fait de faire un lien appelé par exemple "déconnexion" qui pointe sur un script contenant ceci :

<?php // On appelle la session session_start(); // On écrase le tableau de session $_SESSION = array(); // On détruit la session session_destroy(); ?>

Code de la page logout.php

Page 258: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Annexe

258

Page 259: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Mathématiques

259

Formatage d’un nombre : number_format ($nbr[,$dec,[$a,$b]]) : retourne une chaîne de caractères représentant le nombre $nbr avec $dec décimales après formatage. La chaîne $a représente le symbole faisant office de virgule et $b le séparateur de milliers. Par défaut, le formatage est anglophone : $a = ‘’.’’ et $b = ‘’,’’. Très utile pour représenter les nombres élevés au format francophone.

Syntaxe

number_format (nombre, [, nombre de décimales]) number_format (nombre , nombre de décimales , séparateur partie entière et décimale, séparateur de milliers)

Page 260: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Exemple Commandes Affichages Observations

Exemples basiques avec le nombre 10642371.5489

number_format($nombre) 10,642,372 Entier arrondi avec virgule(s) comme séparateur des milliers

number_format($nombre, 0) 10,642,372 Entier arrondi avec virgule(s) comme séparateur des milliers

number_format($nombre, 2) 10,642,371.55 Arrondi à 2 chiffres décimaux avec virgule(s) comme séparateur des milliers

number_format($nombre, 8) 10,642,371.54890000 8 chiffres décimaux (complément avec des 0) avec virgules comme séparateur des milliers

number_format($nombre, 2, '.', ' ') 10 642 371.55 notation anglaise, point décimal, 2 chiffres décimaux et espaces comme séparateur des milliers

number_format($nombre, 2, '.', ',') 10,642,371.55 notation anglaise, point décimal, 2 chiffres décimaux et virgules comme séparateur des milliers

number_format($nombre, 2, ',', ' ') 10 642 371,55 notation française, virgule décimale, 2 chiffres décimaux et espaces comme séparateur des milliers

number_format($nombre, 2, ',', '.') 10.642.371,55 notation française, virgule décimale, 2 chiffres décimaux et points comme séparateur des milliers

260

Page 261: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

Chaînes de caractères

261

On peut délimiter les chaînes de caractères avec la syntaxe Here-doc.

Exemple : $essai = <<<EOD Ma chaîne ‘’essai’’ sur plusieurs lignes. EOD; echo $essai;

La valeur de la variable $essai est délimitée par un identifiant que vous nommez librement. La première apparition de cet identifiant doit être précédée de 3 signes inférieurs <. Sa deuxième apparition doit se faire en premier sur une nouvelle ligne. Cette valeur chaîne se comporte comme si elle était délimitée par des doubles quotes ‘’ ‘’ dans le sens où les variables seront évaluées. Par contre il est inutile d’échapper les guillemets, c’est-à-dire que la déspécialisation des doubles quotes devient inutile.

Page 262: Programmation Web - WordPress.com€¦ · Il faut savoir qu'internet est un réseau composé d'ordinateurs. Ceux -ci peuvent être classés en deux catégories : Les clients : ce

262

Fin