licence math-informatique 1...

66
Licence Math-Informatique 1 ère année Olivier Glück Université LYON 1 / Département Informatique [email protected] http://perso.univ-lyon1.fr/olivier.gluck Partie 3

Upload: vonhi

Post on 13-Sep-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

LicenceMath-Informatique1ère année

OlivierGlückUniversitéLYON1/DépartementInformatique

[email protected]://perso.univ-lyon1.fr/olivier.gluck

Partie3

Page 2: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Copyright§ Copyright©2018OlivierGlück;allrights reserved§ Cesupportdecoursestsoumisauxdroitsd’auteuretn’estdoncpasdansledomainepublic.Sareproductionestcependantautoriséeàconditionderespecterlesconditionssuivantes:§ Sicedocumentestreproduitpourlesbesoinspersonnelsdureproducteur,touteformedereproduction(totaleoupartielle)estautoriséeàlaconditiondeciterl’auteur.

§ Sicedocumentestreproduitdanslebutd’êtredistribuéàdestiercespersonnes,ildevraêtrereproduitdanssonintégralitésansaucunemodification.Cettenoticedecopyrightdevradoncêtreprésente.Deplus,ilnedevrapasêtrevendu.

§ Cependant,dansleseulcasd’unenseignementgratuit,uneparticipationauxfraisdereproductionpourraêtredemandée,maisellenepourraêtresupérieureauprixdupapieretdel’encrecomposantledocument.

§ Toutereproductionsortantducadrepréciséci-dessusestinterditesansaccordpréalableécritdel’auteur.

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 2

Page 3: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Planducours

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 3

§ CM1:Internet,lesréseauxetleweb§ CM2:PagesHTMLetfeuillesdestylesCSS§ CM3:Webinteractif,formulaires,pagesdynamiquesetPHP§ CM4:ProtocoleHTTP,méthodesGETetPOST§ CM5:Lesapplicationsd’Internet§ CM6:Lacouchetransport:lesprotocolesTCPetUDP§ CM7:LeprotocoleIP§ CM8:LesprotocolesEthernet,ARPetICMP.SynthèsedeséchangesentreunclientetserveurWeb

Page 4: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

CM3:Webinteractif,formulaires,pagesdynamiquesetPHP

LewebinteractifFormulairesHTML

ProgrammationcôtéserveurenPHPLesbasesdulangagePHP

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 4

Page 5: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

PlanduCM3§ Lewebinteractif

§ Pagesstatiquesetdynamiques,ProgrammationWebcôtéclient,ProgrammationWebcôtéserveur

§ FormulairesHTML§ Principe,clientpassif/actif,Labalise<FORM>,Lesélémentsd'unformulaire

§ ProgrammationcôtéserveurenPHP§ Qu’est-cequePHP?Interactionsentreleclientetleserveur,Fonctionnementdel’interpréteur,Unpremierexemple

§ LesbasesdulangagePHP§ Typesdedonnéesetvariables,lesopérateurs,leschaînesdecaractères,lestableaux,instructionsconditionnellesetboucles,fonctions,variablesglobales/locales,téléchargementdefichiers

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 5

Page 6: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

LeWebinteractif

PagesstatiquesetdynamiquesProgrammationWebcôtéclientProgrammationWebcôtéserveur

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 6

Page 7: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Pagesstatiquesetdynamiques

§ LeHTMLnepermetpasd'interactivitéavecl'utilisateur§ Lespagesvisualiséessont"statiques"

§ Pagesstatiques§ LapagevisualiséeNfoissurlemêmenavigateurdonneratoujourslemêmerésultat

§ Pagesdynamiques§ Lapagevisualiséedépenddesmanipulationsdel'utilisateur§ Elleestgénéréedynamiquementselonlesactionsdel’utilisateurdanslapage

§ Nécessitedelaprogrammationpourprendreencomptelesactions§ ProgrammationWebcôtéclient:principalementJavascript§ ProgrammationWebcôtéserveur:principalementPHP

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 7

Page 8: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

ProgrammationWebcôtéclient

§ Lesexécutionsassociéesontlieusurleposteclient§ Lenavigateurdoitsupportercesexécutions...§ DesscriptsembarquésdanslapageHTMLquisonttransférésdepuisleserveurversleclient§ "HTML-embedded scripting"§ exemples:javascript,vbscript,…

§ Desapplets§ java,ActiveX,…§ lecodedel'applet estenvoyéauclient§ javatournesurtouteslesplate-formes§ lenavigateurdoitnéanmoinsdisposerd'uneconsolejava...

§ Desplugins propriétaires

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 8

Page 9: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

ProgrammationWebcôtéserveur(1)§ Lesexécutionsassociéesontlieusurleserveur

§ LerésultatdecesexécutionsestunepageHTMLquiestrenvoyéeaunavigateurclient

§ Baséesurl’interfaceCGI- CommonGatewayInterface§ Interfacedecommunicationquidéfinitleformatd'échangesdesdonnéesentreleclientetleserveurHTTP

§ Lesparamètresdel’utilisateursonttransmisparleserveurHTTPàunprogrammequitraitelesrequêtesetproduitunrésultatenHTML(pagedynamique)

§ Lesformulairespermettentderécolterlesparamètresdel’utilisateuravantdelesenvoyerauscriptquis’exécutesurleserveur

§ ScriptsenPHP,PerlouShell,programmesC,Ada…OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 9

Page 10: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

ProgrammationWebcôtéserveur(2)

§ Lesinterpréteursintégrésauserveurweb§ DesscriptspeuventêtreinsérésdanslecodesourcedelapageHTMLetexécutésparleserveurwebpourgénérerducodesourceHTMLavantenvoiaunavigateur§ Exemples:PHP,ASP,…

§ Leserveurwebpeutexécuterdesscriptsnonintégrésdanslapage(CGI-like)§ Exemples:mod_perl/Apache

§ Lesservlets§ LependantdesApplets§ EnlangageJava

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 10

Page 11: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

ProgrammationWeb:récapitulatif

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 11

Web interactif

CGI (Perl, C,Shell, ...)

Scripts côtéserveur

Scripts côtéclient

Applets(Java, ActiveX)

Modules HTTPD

Servlets(Java)

Scripts intégrésà la page HTML

(Javascript,Vbscript)

Scripts CGI-like(mod_perl/

Apache)

Scripts intégrésà la page HTML(PHP, ASP, ...)

Page 12: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

FormulairesHTML

Principe,clientpassif/actifLabalise<FORM>

Lesélémentsd'unformulaire

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 12

Page 13: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Pourquoidesformulaires?

§ Apportedel'inter-activitéavecl'utilisateurenproposantdeszonesdedialogue:unformulairen'estqu'uneinterfacedesaisie!

§ Selonleschoixdel'utilisateur,ilfautyassocieruntraitement§ surleclientavecJavaScriptparexemple§ surleserveurparl'intermédiairedeCGI,PHP,…

§ Exemplestypiquesd'utilisationdeformulaire§ commandes,devisviaInternet§ moteursderecherche§ interactionsavecunebasededonnées

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 13

Page 14: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Principeduformulaire

§Ondécritàl'aidedebalisesHTMLlesdifférentschampsdesaisie

§ Chaquezoneestidentifiéeparunnomsymboliqueauquelseraassociéeunevaleurparl'utilisateur

§Quandleformulaireestsoumis,lescouples(nom/valeur)detoutesleszonessonttransmisdanslarequêteHTTPauserveur

§ Achaquezonedesaisiepeutêtreassociéuntraitementsurleclientparl'intermédiaired'unévénementJavaScript

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 14

Page 15: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Leclientestpassif

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 15

Navigateurclient

Serveur WebDémon HTTP

1 demande du formulaire

DD

Affichage duformulaire 3 envoi du formulaire

recherche de la pageHTML sur le disque

2

l'utilisateur remplitle formulaire

4

Formulairerempli

5 envoi des données duformulaire (soumission)

Serveur WebDémon HTTP

ProgrammeCGI

transmission des donnéesau CGI / lancement de sonexécution

6

SGBD

exécution du CGI7

requête à la SGBD8Serveur WebDémon HTTP réponse en HTML du

CGI renvoyée au démonHTTP

9Affichage dela réponse 10 envoi de la page HTML

résultat

Poste client Site serveur

Page 16: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Leclientestactif

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 16

Navigateurclient

Serveur WebDémon HTTP

1 demande du formulaire

DD

Affichage duformulaire 3 envoi du formulaire

recherche de la pageHTML/JavaScript surle disque

2

l'utilisateur remplit le formulaire, celui-cipeut être modifié dynamiquement

4

Formulairerempli

correctement

5 envoi des données duformulaire (soumission)

Serveur WebDémon HTTP

ProgrammeCGI

transmission des donnéesau CGI / lancement de sonexécution

6

SGBD

exécution du CGI7

requête à la SGBD8Serveur WebDémon HTTP réponse en HTML du

CGI renvoyée au démonHTTP

9Affichage dela réponse 10 envoi de la page HTML

résultat

Poste client Site serveur

SoumissionInterpréteurJavaScript

saisie valide

saisie invalide

Page 17: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Lesélémentsd'unformulaire§ Troiscatégories

§ input :champsdesaisiedetexteetdiverstypesdeboutonstype="text"- zonedetexte(typepardéfaut)type="password"- zonedetextecachétype="checkbox"- casesàcochertype="radio"- minimum2,unseulsélectionnabletype="submit"- soumissionduformulairetype="reset"- boutonderemiseàzérodeschampstype="button"- boutonassociéàducodeJavaScripttype="hidden"- boutoncachétype="file"- upload d’unfichierverleserveur

§ select :menusdéroulants,listesàascenceurssize="1"- popliste,1seulélémentsélectionnablesize="n",n>1- listeàchoixmultiples

§ textarea :zonedesaisied'untexte"long"

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 17

Page 18: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Labalise<FORM>(1)§ <FORM>…</FORM>débutetfinduformulaire§ Deschampsdetypeinput,selectoutextarea neserontvisiblesques'ilssontàl'intérieurd'unebalise<FORM>

§ AttributsMETHOD,ACTION,NAME,TARGET§ METHOD :valeursGETouPOSTquiindiquentlafaçondontlesdonnéessonttransmisesauscriptCGI

§ ACTION :URLduprogrammeCGIquiseraexécutéquandl'utilisateurcliquesurunboutondesoumission

§ NAME :distinguelesdifférentsformulaires§ TARGET :cibledanslaquellelaréponseduprogrammeCGIseraaffichée

§ Leschampsduformulairesonttransmisvial’URL(méthodeGET)oudanslecontenudelarequêteHTTP(méthodePOST).IlssontaccessiblesenPHPdansletableau$_GETou$_POST.

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 18

Page 19: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Labalise<FORM>(2)§AttributENCTYPE

§ ENCTYPE :spécifiel'encodageutilisépourl'envoidesdonnéesduformulairedanslecasdelaméthodePOST(danscecaslesdonnéessonttransmisesdanslecorpsdelarequête)§ ENCTYPE="application/x-www-form-urlencoded":valeurpardéfaut;url-encodelecontenuduformulairedelamêmefaçonqueparlaméthodeGET

§ ENCTYPE="text/plain":lecontenuduformulaireestenvoyéenformattextelisibleparledestinataire(actionmailto:parexemple)

§ ENCTYPE="multipart/form-data":permetd'expédierunfichierattachédanslecorpsdelarequête(<inputtype="file">)

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 19

Page 20: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Labalise<FORM>(3)§Propriétésdel'objetFORM

§ action :accèsàl'attributACTION<form name="f1"action="/cgi-bin/p1.cgi">…</form><script>document.f1.action="cgi-bin/p2.cgi"</script>§method :accèsàl'attributMETHOD§ target :accèsàl'attributTARGET§ enctype :typed'encodagedesdonnéestransmisesversleserveuraveclaméthodePOST

§ elements :accèsauxobjetsduformulaires§ elements.length - nombred'objetsduformulaire§ elements[n].name - nomduénième+1objet§ elements[n].value- valeurduénième+1objet

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 20

Page 21: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Labalise<FORM>(4)

§Méthodedel'objetFORM:submit()§ déclenchel'envoiduformulairecommesil'utilisateuravaitappuyésurunboutondesoumission

<script>document.f1.submit()</script>

§ EvénementJSassociéàl'objetFORM:onSubmit()§ permetl'exécutiondecodeJavaScriptavantl'envoiduformulaire(vérificationdessaisiesparexemple)

<form name="f1"method="post"action="/cgi-bin/p1.cgi"target="_blank"onSubmit="returnverif_f1(this)">

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 21

Page 22: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<INPUTtype="TEXT">

§ Attributs:NAME,VALUE,SIZE,MAXLENGTH§ SIZE:tailled'affichagedelazone(encaractères)§ MAXLENGTH:taillederemplissagedelazone(encarac.)<INPUTTYPE="text"NAME="email"VALUE="entrezvotreemailici"SIZE="30"MAXLENGTH="50"/>

§ Propriétés§ name,value,defaultValue,type,form (leformulairequicontientl'élémentINPUT)

§Méthodes§ focus(),blur(),select()

§ Evénements§ onBlur,onChange,onFocus,onSelect

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 22

Page 23: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<INPUTtype="PASSWORD">

§ Attributs:NAME,VALUE,SIZE,MAXLENGTH<INPUTtype="PASSWORD"NAME="pass"VALUE="entrezvotrepasswd ici"SIZE="8"/>

§ Propriétés§ name,value,defaultValue,type,form

§Méthodes§ focus(),blur(),select()

§ Pasd'événementassocié

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 23

Page 24: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<INPUTtype="CHECKBOX">

§ Casesàcocherpermettantunchoixmultiple§ Attributs:NAME,VALUE,CHECKED

<INPUTtype="CHECKBOX"NAME="cours"VALUE="1"CHECKED/>HTML<BR/><INPUTtype="CHECKBOX"NAME="cours"VALUE="2"CHECKED/>JS<BR/><INPUTtype="CHECKBOX"NAME="cours"VALUE="3"/>CGI<BR/>

§ Propriétés§ name,value,type,form,checked etdefaultChecked (booléen)

§Méthode§ document.f1.cours[1].click()- coche/décochelacaseJS

§ Evénement§ onClick - quandl'utilisateurcochelacase

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 24

Page 25: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<INPUTtype="RADIO">

§ Choixd'uneetuneseuleoptionparmin§ Attributs:NAME,VALUE,CHECKED

<INPUTtype="RADIO"NAME="cours"VALUE="1"/>HTML<INPUTtype="RADIO"NAME="cours"VALUE="2"CHECKED />JS<INPUTtype="RADIO"NAME="cours"VALUE="3" />CGI

§ Propriétés§ name,value,type,form,checked etdefaultChecked(booléen),index(donnelerangduboutonsélectionné),length

§Méthode§ document.f1.cours[2].click()- sélectionnelacaseCGI

§ Evénement§ onClick - quandl'utilisateurcochelacase

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 25

Page 26: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<INPUTtype="SUBMIT">

§ EnvoidesdonnéesetexécutionduprogrammeCGIspécifiéparl'attributACTIONde<FORM>

§ Attributs:NAME,VALUE<INPUTtype="SUBMIT"NAME="s"VALUE="login" /><INPUTtype="SUBMIT"NAME="s"VALUE="logout" />VALUEpermetdedifférencierletraitementàeffectuerparleCGIs'ilyaplusieursboutonsdesoumission

§ Propriétés§ name,value,type,form

§Méthode§ click()- soumetleformulaire

§ Evénement§ onClick

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 26

Page 27: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<INPUT>et<BUTTON>

§ Ilestpossiblederemplacerlabalise<INPUT>parlabalise<BUTTON>.Celapermetdedistinguerlavaleurtransmiseauserveurdelavaleurquis’affichedanslebouton.

§ Exempled’utilisationdelabalise<BUTTON><BUTTONtype="SUBMIT"NAME="action"VALUE="com1">Commenter!

</BUTTON><BUTTONtype="SUBMIT"NAME="action"VALUE="com2">Commenter!

</BUTTON>Lesdeuxboutonsontunevaleurdifférentemaiss’affichentdemanièreidentiquedanslenavigateur.

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 27

Page 28: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<INPUTtype="RESET">

§ Rechargetousleschampsduformulaireàleurvaleurpardéfaut

§Neprovoquepasl'exécutionduCGI§ Attributs:NAME,VALUE

<INPUTtype="RESET"NAME="raz"VALUE="Effacer" />

§ Propriétés§ name,value,type,form

§Méthode§ click()- réinitialiseleformulaire

§ Evénement§ onClick

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 28

Page 29: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<INPUTtype="BUTTON">

§N'adesensquedansuncontexteJavaScript§ pasdecomportementpréprogrammé§ nepermetpasdecollecterunevaleurdansleCGI

§ Attributs:NAME,VALUE<INPUTtype="BUTTON"NAME="b1"VALUE="Aide"onClick="AideEnLigne()" />

§ Propriétés§ name,value,type,form

§Méthode§ click()- simuleunclickdel'utilisateur

§ Evénement§ onClick

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 29

Page 30: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<INPUTtype="HIDDEN">

§ Permetdetransmettredes"variables"cachéesauprogrammeCGI§ trèsutileparexemplepourtransmettredesvariablesdeformulairesenformulaires

§ invisiblepourl'utilisateur

§ Attributs:NAME,VALUE<INPUTtype="HIDDEN"NAME="h1"VALUE="0" />

§ Propriétés§ name,value,type,form

§ Pasdeméthodeetpasd'événementpuisquel'objetn'estpasvisible

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 30

Page 31: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<INPUTtype="FILE">§ Permetdetransmettreunfichierdelamachinelocaleversleserveurweb(upload)

§ Attributs:NAME,VALUE<INPUTtype="FILE"NAME="fichier"VALUE="Parcourir"/>

§ Pourtransmettreunfichier,dans<FORM>,ilfaut:<FORMmethod="POST"action="page.php"enctype="multipart/form-data">

§ Pourlimiterlatailledufichiertransmis:<INPUTtype="hidden"name="MAX_FILE_SIZE"value="1048576"/>§ Amettreavant<INPUTtype="FILE">§ Latailleestenoctets:1048576=1Mo

§ LesfichierssonttransmisauserveurdanslecontenudelarequêteHTTP(méthodePOST).IlssontaccessiblesenPHPdansletableau$_FILES.Ilssontstockésdansundossiertemporairesurleserveur.PHPfournitdesfonctionspourmanipulerlesfichiers.

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 31

Page 32: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<SELECT>et<OPTION>(1)

§ Attributsde<SELECT>:NAME,SIZE,MULTIPLE§ SIZE:tailledelascrolled-list (pop-list si1)§ MULTIPLE:autoriselasélectionmultiplesiSIZE>1

§ Attributsde<OPTION>:VALUE,SELECTED<SELECTNAME="pop"><OPTIONVALUE="v1">1<OPTIONVALUE="v2"SELECTED>2<OPTIONVALUE="v3">3

</SELECT><SELECTNAME="mul"SIZE="3"MULTIPLE><OPTIONVALUE="v1">1<OPTIONVALUE="v2"SELECTED>2<OPTIONVALUE="v3"SELECTED>3<OPTIONVALUE="v4">4

</SELECT>OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 32

Page 33: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<SELECT>et<OPTION>(2)

§ Propriétésd'unobjet<SELECT>§ name,type(select/select-one/select-multiple),form,length,§ selectedIndex :rangdel'optionsélectionnée;danslecasd'unelistemultiple,rangdelapremièreoptionsélectionnée

§Méthodesd'unobjet<SELECT>:focus(),blur()§ Evénementsliésàunobjet<SELECT>:onFocus,onBlur,onChange

§ Propriétésrelativesauxoptions§ defaultSelected,selected,text,valuedocument.f1.mul.options[2].text contient3document.f1.mul[2].text =4;§ onpeutdynamiquementmodifier,ajouter,supprimerdesitemsdelaliste

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 33

Page 34: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<SELECT>et<OPTION>(3)

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 34

<!-- ex_popup.html --><HTML><HEAD><SCRIPT>function ChLang(f){if(f.langue.selectedIndex ==0){f.choix.options[0].text="Rouge";f.choix.options[1].text="Vert";f.choix.options[2].text="Bleu";}else {f.choix.options[0].text="Red";f.choix.options[1].text="Green";f.choix.options[2].text="Blue";}}</SCRIPT></HEAD><BODY>

<FORMname="f1"METHOD="POST"ACTION="/cgi-bin/p1.cgi"><SELECTNAME="langue"onChange="ChLang(this.form)"><OPTIONVALUE="F">Français<OPTIONVALUE="E">English</SELECT><SELECTNAME="choix"><OPTIONVALUE="R">Rouge<OPTIONVALUE="V">Vert<OPTIONVALUE="B">Bleu</SELECT></FORM></BODY></HTML>

Page 35: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<SELECT>et<OPTION>(4)

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 35

<!-- ex_scrollist.html--><HTML><HEAD><SCRIPT>functionto2(f){r1=f.l1.selectedIndex;if(r1<0)return;opt=newOption();opt.text=f.l1.options[r1].text;opt.value=f.l1.options[r1].value;f.l1.options[r1]=null;r2=f.l2.length;f.l2.options[r2]=opt;}functionto1(f){…}</SCRIPT></HEAD><BODY>

<FORMname="f1"METHOD="POST"ACTION="/cgi-bin/p1.cgi"><SELECTNAME="l1"SIZE="5"><OPTIONVALUE="1">Français<OPTIONVALUE="2">Anglais<OPTIONVALUE="3">Italien<OPTIONVALUE="4">Espagnol<OPTIONVALUE="5">Allemand</SELECT><INPUTtype="BUTTON"VALUE=">>"

onClick="to2(this.form)"><INPUTtype="BUTTON"VALUE="<<"

onClick="to1(this.form)"><SELECTNAME="l2"SIZE="5"></SELECT></FORM></BODY></HTML>

Page 36: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

<TEXTAREA>

§ Zonedesaisiedetextelibre§ Attributs:NAME,ROWS,COLS

<TEXTAREANAME="t1"ROWS="3"COLS="40">Entrezvosremarquesici</TEXTAREA>

§ Propriétés§ name,value,defaultValue,type,form,cols,rows

§Méthodes§ focus(),blur(),select()

§ Evénements§ onBlur,onChange,onFocus,onSelect

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 36

Page 37: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

ProgrammationcôtéserveurenPHP

Qu’est-cequePHP?Interactionsentreleclientetleserveur

Fonctionnementdel’interpréteurUnpremierexemple

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 37

Page 38: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Qu'est-cequePHP?

§ "PHPis aserver-side,HTML-embedded,cross-platformscripting language"§ Langageinterprétéetindépendantdelaplate-formed'exécution,§ quis'exécutesurleserveur,§ dontlesinstructionssontintégréesaucodesourced'unepageHTML.

§Unfichier.php peutcontenirducodeHTMLetducodePHP§ LeserveurlitlesinstructionsPHPintégréesàlapageHTML,interprètecesinstructionsetlesremplaceparlerésultatdeleurexécution(pagesdynamiques)§ Leclientn'apasaccèsaucodesourcecarilestinterprétéavantenvoi

§ Leclientnereçoitquelerésultatdel'exécutionOlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 38

Page 39: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Interactionsentreleclientetleserveur

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 39

Navigateurclient Serveur Web

Démon HTTP

1 Requête HTTPdemandant index.php

DD

4 Réponse HTTP

recherche de index.phpsur le disque2

SGBD

Poste client Site serveur

InterpréteurPHP

requêtes SQL éventuelles

interprétation descommandes PHP3

code HTML/JavaScript

Affichage dela page

Page 40: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Fonctionnementdel'interpréteurPHP

§UnblocPHPestungroupedelignesencadrépardeuxbalises<?php ?>§ Toutelignesituéeàl'extérieurdecesbalisesn'estpasinterprétée:elleestrecopiéeàl'identiquepourêtrerenvoyéeauclient

§ Toutelignesituéeàl'intérieurdecesbalisesestinterprétéeparleserveurcommeuneinstructionPHP

§OnpeutmélangerlescommentairesduC,C++etshell !<?php /*commentairetypeC*///commentairetypeC++#commentairetypeshell?>

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 40

Page 41: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Unpremierexemple

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 41

<!-- 1.php--><HTML><HEAD>

<TITLE>PremierexemplePHP</TITLE></HEAD><BODY><H2>Voicilesinformationsquejeconnaisàvotresujet</H2><?php/*$HTTP_USER_AGENTseraremplacéeparsavaleuravantl'envoidelaréponseauclient*/echo $_SERVER['HTTP_USER_AGENT'];?></BODY></HTML>

Page 42: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

LesbasesdulangagePHP

LesTypesdedonnéesetvariables,lesopérateursLeschaînesdecaractères

LestableauxInstructionsconditionnellesetbouclesFonctions,variablesglobales/locales

TéléchargementdefichiersOlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 42

Page 43: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Typesdedonnéesetvariables

§ Lesnomsdevariablessontprécédésd'un$$i=5;echo "$i";

§ Pasdedéclaration,l'affectationdétermineletypedelavariable

§ PHPsupportelestypesdedonnéessuivants§ Booléens:true oufalse§ Nombresentiers:$i=(int)(7/3)#$ivaut2§ Nombresàvirguleflottante:$i=7/3#$ivaut2.33333333…§ Chaînesdecaractères§ Tableaux§ Objets(programmationorientéeobjet)

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 43

Page 44: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Lesopérateurs(1)

§Opérateursarithmétiques§ addition:$a+$b§ soustraction:$a- $b§ multiplication:$a*$b§ division:$a/$b§ modulo(restedeladivisionentière):$a%$b$i=7/3;echo "<br />$i";#affiche2.3333333333333$j=7%3;echo "<br />$j";#affiche1

§ Concaténationdechaînedecaractère(.)$ch1="Bonjour";$ch2="Monsieur";$ch =$ch1.$ch2echo $ch ."Durand".'!';#affiche"BonjourMonsieurDurand!"

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 44

Page 45: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Lesopérateurs(2)

§Opérateurslogiques§ ETlogique:and,&& (lesdeuxsontpossibles)§ OUlogique:or,||§ XORlogique:xor§ NONlogique:!

§Opérateursd'affectation§ affectationaveclesigne=$a=($b=4)+1;#$bvaut4et$avaut5§ lesopérateurscombinés:+=,-=,*=,/=,.=,&=,|=$a+=1;#équivalentà$a=$a+1;$ch .="!";#équivalentà$ch =$ch ."! »;

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 45

Page 46: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Lesopérateurs(3)

§Opérateursdecomparaison§ égalà:$a==$b§ différentde:$a!=$b§ inférieurà:$a<$b§ supérieurà:$a>$b§ inférieurouégalà:$a<=$b§ supérieurouégalà:$a>=$b

§Opérateurternaire§ (condition)?(expr1):(expr2);§ renvoieexpr1siconditionestvraiesinonrenvoieexpr2$max=($a>=$b)?$a:$b;#$max<- max($a,$b)

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 46

Page 47: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Chaînesdecaractères(1)

§ Chaînesdecaractères$ch1='Bonjour';$ch2="$ch1Monsieur!\n";§ entreguillemetssimples,rienn'estinterprétésauf\'et\\ quiéchappentlecaractère'etlecaractère\

§ entreguillemetsdoubles,sontinterprétéslesvariables,lescaractèresspéciaux\n\r\t \$\"\\

§ echo "\n"; provoqueunsautdelignedanslecodeHTMLgénérémaisneprovoquedesautdeligneHTML(ilfaututiliser<br />)!

§ Accèsauxcaractèresd'unechaîneetconcaténation$ch ='Ce'. 'ciestunechaîne.';echo $ch{2};#affiche"c"

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 47

Page 48: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Chaînesdecaractères(2)

§ Substitutionsdechaînes§ str_replace(search,replace,str)retourneunechaînequicontientlachaînestr danslaquelletouteslesoccurrencesdesearch sontremplacéesparreplace

#lacommandesuivanteaffiche"Bonjourtiti"echo str_replace("toto","titi","Bonjourtoto");

§ Découpagedechaînes§ explode(sep,str)retourneuntableaudechaînesenscindantstr àl'aideduséparateursep

§ implode(sep,tab)retourneunechaînefabriquéeparlaconcaténationdesélémentsdutableauetduséparateursepentrechaqueélément

§ parse_str(str) analyseunechaînetypeQUERY_STRINGetfabriquelescouples$nom=valeurassociés

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 48

Page 49: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Chaînesdecaractères(3)§ Comparaisonetlongueur

§ strcmp(str1,str2) comparaisonbinaire(commeenC)§ strlen(str)retournelalongueurdestr

§Web§ rawurlencode(str)/rawurldecode(str)encode/décodelachaînestr selonlaRFC1738(%xy <->caractère)

§ urlencode(str)/urldecode(str)idemmaisadaptéauformulaire(remplaceégalementle+enespace…)

§ parse_url(str)retournedansuntableaulescomposantsd'uneURL(scheme,host,port,user,pass,path,query,fragment)http://username:password@hostname/path?arg=value#anchor

§ Afficherladateetl'heureactuelleecho "Noussommesle".date("jmY")."etilest".date("H\hi")."mn";

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 49

Page 50: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Tableaux(1)§ LestableauxdePHPsontassociatifs

§ l'indexdansletableauestappeléclé§ lavaleurassociéeàunecléestappeléevaleur§ untableauestunensembled'associationsclé/valeur§ laclépeutêtreunentierouunechaînedecaractères

§ Créationd'untableau§ soitdirectementenaffectantdesvaleursautableau$tab[0]=1;#cléentière,valeurentière$tab[1]="toto";#cléentière,valeurdetypechaîne$tab["toto"]="titi";#cléetvaleurdetypechaîne$tab["toto"][0]=1;#tableauà2dimensions§ soitenutilisantlafonctionarray()$tab1=array(1,"toto");#0=>1et1=>"toto"$tab2=array("toto"=>1,"titi"=>"toto");#lacléestdonnée

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 50

Page 51: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Tableaux(2)§Nombred'élémentsd'untableau

sizeof($tab);count($tab);#retournelenombred'élémentsdutableau$tabs'ilexiste,1si$tabn'estpasuntableau,0si$tabn'existepas

§ Suppressiond'unélémentunset($tab["toto"]);#fonctionneaussipourunevariable

§ Trisdetableaux§ letripeutsefairesurlescléset/oulesvaleurs;l'associationclé/valeurpeutêtrecassée

§ asort()/arsort():trieletableauparordrecroissant/décroissantdevaleurs

§ ksort()/krsort():trieletableauparordrecroissant/décroissantdeclés

§ sort() :trieletableauparordrecroissantdevaleursetréassignedesclés(0,1,…);onperdl'associationclé/valeur

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 51

Page 52: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Tableaux(3)

§ Lepointeurdetableau§ àchaquetableaucorrespondunpointeurinternequiestuneréférencesurl'élémentcourant

§ current($tab)désignel'élémentcourant§ next($tab)déplacelepointeurversl'élémentsuivant§ prev($tab)déplacelepointeurversl'élémentprécédent§ end($tab)déplacelepointeursurledernierélément§ reset($tab)déplacelepointeursurlepremierélément$tab=array("a"=>1,"d"=>5,"b"=>8,"c"=>4);$val=current($tab);echo "$val<br />";#affiche"1<br />"$val=next($tab);echo "$val<br />";#affiche"5<br />"asort($tab);end($tab);prev($tab);$val=prev($tab);echo "$val<br />";#affiche"4<br />"

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 52

Page 53: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Tableaux(4)

§ Extractiond'élémentsd'untableau§ list() permetd'extrairedesvaleursd'untableau$tab=array(1,8,5);sort($tab);list($v1,$v2)=$tab;echo "$v1$v2"; #affiche"15"§ key($tab)permetd'extrairelaclédel'élémentpointéparlepointeurinternedutableau

$tab=array("a"=>1,"b"=>8);next($tab);$clé=key($tab);$val=$tab[$clé];echo "$clé:$val"; #affiche"b:8"§ extract($tab)permetd'extraired'untableautouteslesvaleurs,chaquevaleurestrecopiéedansunevariableayantpournomlavaleurdelaclé

$tab=array("a"=>1,"b"=>8);extract($tab);echo "$b$a"; #affiche"81"

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 53

Page 54: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Tableaux(5)

§ Extractiond'élémentsd'untableau§ each($tab)retournelapaireclé/valeurcourantedutableauetavancelepointeurdetableau;cettepaireestretournéedansuntableaude4éléments:0=>clé,1=>valeur,key=>cléetvalue=>valeur

§ Parcoursdel'ensembledutableau§ aveclist() eteach()$tab=array("a"=>1,"d"=>5,"b"=>8,"c"=>4);reset($tab);while (list ($k,$v)=each ($tab)){echo "$k=>$v<br />\n";}#quandlepointeurdépasselafinde$tab,each retournefalse

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 54

Page 55: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Tableaux(6)

§ Parcoursdel'ensembledutableau§ foreach() placelepointeurentêtedutableauetparcourtl'ensembledeséléments;foreach()travaillesurunecopie dutableauoriginal

$tab=array("a"=>1,"d"=>5,"b"=>8,"c"=>4);#parcoursdesvaleursuniquement:$v=1,5,8,4foreach ($tabas$v){echo "valeur:$v<br />\n";}#parcoursdescouplesclé/valeurforeach ($tabas$k=>$v){echo "$k:$v<br />\n";}#tableauxmultidimensionnels$tab2[0][0]="a";$tab2[0][1]="b";$tab2[1][0]="y";$tab2[1][1]="z";foreach($tab2as$t){foreach ($t as$v){echo "$v\n";}}

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 55

Page 56: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Instructionsconditionnelles(1)

§ if/then/else commeenCif(condition1){#sicondition1estvraie}elseif (condition2){#sicondition2estvraie(etpascondition1)}elseif (condition3){#sicondition3estvraie(etnicondition1,nicondition2)}else {#sinicondition1,nicondition2,nicondition3nesontvraies}

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 56

Page 57: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Instructionsconditionnelles(2)

§ Leswitch commeenCswitch(expr){case(val1):#àexécutersiexpr vautval1break;case(val2):#àexécutersiexpr vautval2break;default:#àexécuterdanstouslesautrescas}

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 57

Page 58: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Lesboucles

§ Boucle"tantque"commeenCwhile (condition){#exécutétantquelaconditionestvraie}

§ Boucle"Faire…tantque"commeenCdo{/*…*/}while (condition);

§ Boucle"for"commeenCfor($i=1;$i<=10;$i++){#exécutétantque($i<=10)estvraie}

§ L'instructionbreakpermetdesortird'uneboucle§ L'instructioncontinuepermetdepasserdirectementàl'itérationsuivantedelaboucle

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 58

Page 59: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Lesfonctions(1)§ Premierexemple

functionmax($a,$b){#corpsdemax()if($a>$b){return $a;}else {return $b;}}#appeldelafonctionmax()$m=max(5,8);#$mvaut8

§ Ilestpossiblederetournern'importequeltypedevariable(tableau,objet,…)

§Unefonctionpeutnerienretourner§ PHPpermetlepassaged’argumentsparvaleuretparréférence

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 59

Page 60: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Lesfonctions(2)§ Deuxtypesdepassageparréférence

§ defaçonpermanenteenajoutantun& devantlenomdelavariabledansladéfinitiondelafonction

§ defaçonponctuelleenajoutantun& devantlenomdelavariablelorsdel'appeldelafonction

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 60

function plus3($a){$a+=3;}function plus5(&$a){$a+=5;}

#passageparvaleur$x=1;plus3($x);echo $x;#affiche"1"#passageparréférenceponctuel$y=1;plus3(&$y);echo $y;#affiche"4"#passageparréférence"forcé"$z=1;plus5($z);echo $z;#affiche"6"

Page 61: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Lesvariablesglobales/locales(1)

§ Variablesglobales<?php $a=1;include "fonctions.php";?>#$aestglobale;elleestaccessibledansfonctions.php

§ Variableslocalesàunefonction<?php$a=1;#portéeglobalefunction affiche(){echo $a; #$aestlocaleàlafonction

}affiche(); #n'afficherien!?>

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 61

Page 62: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Lesvariablesglobales/locales(2)

§ Accèsàunevariableglobaledansunbloc§ Déclarerlavariablecommeglobal danslebloc(créeuneréférencelocalesurlavariableglobale)

§ Ouutiliserletableauassociatif$GLOBALS<?php $a1=1;$a2=2;#portéeglobalefunction affiche(){global$a1;#$a1estlavariableglobaleecho $a1."et".$GLOBALS['a2'];$a1++;

}affiche(); #affiche"1et2"echo $a1;#affiche"2"($a1aétémodifiée)?>

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 62

Page 63: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Lesvariablesglobales/locales(3)

§ Variablesstatiquesdansunbloc§ Unevariablestatiqueauneportéelocaleàunblocmaisconservesavaleurentredeuxexécutionsdubloc

§ Ellessontutilespourlesfonctionsrécursivesfunction up_to_10(){static $cpt=0;$cpt++;echo "$cpt";if($cpt<10)up_to_10();}up_to_10();#affiche12345678910

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 63

Page 64: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Lesvariablesprédéfinies§ DepuisPHP4.1.0,destableaux"super-globaux"sontprédéfinis

§ accessiblesdansn'importequelcontexted'exécution§ infossurlesvariablesduserveur,lesvariablesd'environnement,lesvariablesdePHP,...

§ LecontenudecestableauxdépenddelaversionetdelaconfigurationduserveuretdePHP$GLOBALS:variablesglobalesdel'exécutionencours$_SERVER:variablesfourniesparleserveurWEB

'PHP_SELF'(cheminduscriptsurleserveur),'argc','argv'(exécutionenlignedecommandeouGET),lesvariablesd'environnementCGI,parexemple$_SERVER['QUERY_STRING’]

$_GET:variablesfourniesparHTTP/méthodeGET$_POST:variablesfourniesparHTTP/méthodePOST$_FILES:variablesfourniesparHTTPsuiteàuntéléchargementdefichier(s)parlaméthodePOST

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 64

Page 65: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Téléchargementdefichiers(1)§ PHPoffrelapossibilitéderecevoirdesfichierstexteoubinaireenprovenanceduclientetd'yassocieruntraitement§ RéceptionparlaméthodePOST:uneboitededialoguepermetàl'utilisateurdesélectionnerunfichierlocal

<FORMENCTYPE="multipart/form-data"ACTION="..."METHOD="POST"><INPUTTYPE="hidden"NAME="MAX_FILE_SIZE"VALUE="1000"/>Envoyezcefichier:<INPUTNAME="userfile"TYPE="file">

<INPUTTYPE="submit"VALUE="Envoyerlefichier"></FORM>

§ Lefichiertéléchargéserastockétemporairementdansunrépertoire$TMPDIRsurleserveur

§ move_uploaded_file() permetdedéplacerunfichiertéléchargéparPHP

§ is_uploaded_file()permetdevérifierqu'unfichierabienététéléchargéparlaméthodePOST

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 65

Page 66: Licence Math-Informatique 1 annéeperso.univ-lyon1.fr/olivier.gluck/Cours/Supports/LIFASR2/LIFASR2... · Licence Math-Informatique 1èreannée ... §CM1 : Internet, les réseaux et

Téléchargementdefichiers(2)

§ InformationsreçuesparPHPdans$_FILES§ lechampcaché MAX_FILE_SIZEpermetàPHPdefairedesvérificationssurlatailledufichiertéléchargé

§ $_FILES['userfile']['name'] :nomoriginaldufichiersurlamachineduclientweb

§ $_FILES['userfile']['type']:typeMIMEdufichier,silenavigateurafournicetteinformation

§ $_FILES['userfile']['size']:taille,enoctets,dufichier§ $_FILES['userfile']['tmp_name']:nomtemporairedufichierquiserachargésurlamachineserveur

§ $_FILES['userfile']['error']:0encasderéussitedutéléchargementsinoncoded'erreur(tailletropgrande…)

OlivierGlück L1Math-infoUCBL- LIFASR2:Introductionauxréseauxetauweb 66