interface post-wimp et paradigmes...

44
Prog Web Server - 2015-2016

Upload: letuyen

Post on 30-Apr-2018

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Page 2: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 02 / 44

• require( ) et include( ) incluent et exécutent un fichier PHP.– La commande require() se remplace elle-même par le contenu du

fichier spécifié– require( ) et include( ) sont identiques, sauf dans leur façon de gérer

les erreurs. include( ) produite une Alerte (warning) tandis que require( ) génère une erreur fatale. Notamment lorsque le fichier manque.

• require_once( ) et include_once( )– La principale différence est qu'avec require_once( ), vous êtes

assurés que ce code ne sera ajouté qu'une seule fois, évitant de ce fait les redéfinitions de variables ou de fonctions, génératrices d'alertes.

• Structuration du code• Partage de code

Include Session Header $_SERVER Heredoc Formulaire

Page 3: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 03 / 44

• Création d’un fichier d’inclusion

– Par convention .inc

• Inclusion de ce fichier dans d’autres

– require ou include

• La fonction calculDelaialors disponible

<FilesMatch "^\.ht">

Order allow,deny

Deny from all

Satisfy All

</FilesMatch>

#idem pour <Files *.inc> ou < Files *~>

Elément de Configuration d’apache

Include Session Header $_SERVER Heredoc Formulaire

Page 4: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 04 / 44

Sauvegarde à court terme

Include Session Header $_SERVER Heredoc Formulaire

Page 5: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 05 / 44

• Le support des sessions de PHP est un moyen de préserver des données entre plusieurs accès. Cela vous permet de créer des applications personnalisées.

• Chaque visiteur accédant à votre page web se voit assigner un identifiant unique, appelé "identifiant de session". Il peut être stocké soit dans un cookie, soit propagé dans l'URL.

• Lorsqu'un visiteur accède à votre site, PHP va vérifier sur demande explicite avec session_start( ) s'il existe une session du même nom. Si c'est le cas, l'environnement précédemment sauvé sera recréé.

• session_start( )

– La gestion par défaut du numéro de session (identifiant) passe par les cookies…

– donc session_start( ) doit être appelé avant toutes sorties

Include Session Header $_SERVER Heredoc Formulaire

Page 6: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 06 / 44

• $_SESSION : tableau contenant toutes les variables de session

• Affection = création ou mise à jour– $_SESSION["style"]="blue.css" : crée une variable de session « style » qui vaut « blue.css »

– On peut mettre aussi des tableaux dans une session$_SESSION["pagesvues"]=array("news/France/01.news" => true,

"news/France/02.news" => false);

• Utilisation = utilisation de la variable– echo " <link …. href='{$_SESSION["style"]}'... ";

if ( $_SESSION["pagesvues"]["news/France/02.news"] ) { /* … */ }

• Test d’existence : isset– if ( isset($_SESSION["style"]) ) …

• Effacement : unset– unset($_SESSION["style"])

Include Session Header $_SERVER Heredoc Formulaire

Page 7: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 07 / 44

• Fonction session_name

– SANS PARAMETRE : permet de savoir le nom de la session courante

– Avec une chaine de caractères (au moins une lettre) en paramètre ET AVANT session_start : permet de commencer une session spécifique

• Vous permet de faire des sessions distinctes sur www-mips…

• A mettre avant toutes ouvertures de session !

– Sinon : une seule session pour tous les sites d’un serveur…

Include Session Header $_SERVER Heredoc Formulaire

Page 8: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 08 / 44

// il faut détruire la session : copier coller de php.net...

// Initialisation de la session.

// Si vous utilisez un autre nom

// session_name("autrenom")

session_start();

// Détruit toutes les variables de session

$_SESSION = array();

// Si vous voulez détruire complètement la session, effacez également

// le cookie de session.

// cela détruira la session et pas seulement les données de session !

if (isset($_COOKIE[session_name()])) {

setcookie(session_name(), '', time()-42000, '/');

}

// Finalement, on détruit la session.

session_destroy();

Include Session Header $_SERVER Heredoc Formulaire

Page 9: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 09 / 44

Navigateur web Serveur web

Requête HTTP via TCPLe navigateur connait l’IP du Serveur (URL)

Module interned‘interprétation du php

Code php

HtmlRéponse HTTP via TCPLe navigateur connait l’IP du Client via la requête

Include Session Header $_SERVER Heredoc Formulaire

Page 10: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 10 / 44

Navigateur web Serveur web

Requête HTTP via TCPLe navigateur connait l’IP du Serveur (URL)

Module interned‘interprétation du php

Code php

HtmlRéponse HTTP via TCPLe navigateur connait l’IP du Client via la requête

Demande du numéro de session (cookie)

Retourne l numéro de session

Session(1 fois

par page demandée)

Serveur BD

Génération de la page(interprétation du php)

Include Session Header $_SERVER Heredoc Formulaire

Page 11: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 11 / 44

• On part d’une liste d’articles

– listearticle.php

– a priori aucun n’est vu

– Ils sont affichés comme à la fin du TP03

• nav.php

• A chaque visite, ils sont marqués lus

• Quand on revient sur la liste d’articles, c’est mis à jour

Include Session Header $_SERVER Heredoc Formulaire

Page 12: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 12 / 44

listearticle.php1, listearticle

sess

ion

2, initialisation… et génération

2’ : session id

Include Session Header $_SERVER Heredoc Formulaire

Page 13: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 13 / 44

Include Session Header $_SERVER Heredoc Formulaire

Page 14: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 14 / 44

listearticle.php

sess

ion

3, la pagetous les articles sont« non vu »

article1 : false

article2 : false

article3 : false

4, on veut voir article2 via un lienvers nav.php?indice=2

Include Session Header $_SERVER Heredoc Formulaire

Page 15: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 15 / 44

nav.php

sess

ion

6, la pagequi montrel’article2

article1 : false

article2 : false

article3 : false

5, modification de la session

article2 : true

0 : session id

Include Session Header $_SERVER Heredoc Formulaire

Page 16: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 16 / 44

Include Session Header $_SERVER Heredoc Formulaire

Page 17: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 17 / 44

Include Session Header $_SERVER Heredoc Formulaire

Page 18: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 18 / 44

listearticle.php

sess

ion

9, la pagequi notel’article2 « lu »

article1 : false

article2 : true

article3 : false

8, lecture de la session

0 : session id

Include Session Header $_SERVER Heredoc Formulaire

Page 19: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 19 / 44

nav.php

Include Session Header $_SERVER Heredoc Formulaire

Page 20: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 20 / 44

• Dans php.ini – session.use_cookies = 0 (par défaut à 1)

• string session_id ([ string $id ] )– session_id() pour obtenir ou forcer le numéro de session.– Si id est utilisé, il fixe le numéro de session. A utiliser avant

session_start( ). • La constante SID peut aussi etre utilisée directement pour écrire le

numéro de session dans les URLs

• Reconnu automatiquement si le SID est écrit en premier : echo '<br /><a href="page2.php?' . SID . '">page 2</a>';

• Sinon, il faut utiliser un nom de variable et utiliser session_id( ) : echo '<br /><a href="page2.php?session_id=' . SID . '">page 2</a>'; …session_id($_GET["session_id"]);

Include Session Header $_SERVER Heredoc Formulaire

Page 21: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 21 / 44

• Utilisation de session_id ("id de session") avant session_start

• Chaque exécution de la page accédera à la même session

– Attention au accès concurrent…

– … mais facile de faire une page où tout le monde poste : démo live !

Include Session Header $_SERVER Heredoc Formulaire

Page 22: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 22 / 44

• Fonction header("Location: $url");

• $url : localisation de la page de redirection

– Chemin local

– Chemin absolu (http://...)

• Utilise un champ d’une réponse http

• DONC A FAIRE AVANT D’EMETTRE UNE REPONSE

– i.e. avant d’être dans le document html

– Le moindre espace compte

• header: plus général, fonctionne pour toutes informations de l’entête http…

Include Session Header $_SERVER Heredoc Formulaire

Page 23: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 23 / 44

Information sur le serveur (la page courante, etc.)

Include Session Header $_SERVER Heredoc Formulaire

Page 24: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 24 / 44

• http://fr2.php.net/reserved.variables.server.php

• $_SERVER est un tableau contenant des informations comme les en-têtes, dossiers et chemins du script.

• Les entrées de ce tableau créées par le serveur web.

• Aucune garantie que tous les serveurs les rempliront tous ; certains en oublieront quelques-unes et en rajouteront de nouvelles non mentionnées ici. Cependant, un grand nombre de ces variables fait partie des » spécifications CGI/1.1, et vous pouvez donc vous attendre à les retrouver.

Include Session Header $_SERVER Heredoc Formulaire

Page 25: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 25 / 44

Array (

[MIBDIRS] => D:/xampp-1.7/php/extras/mibs

[MYSQL_HOME] => \xampp\mysql\bin

[OPENSSL_CONF] => D:/xampp-1.7/apache/bin/openssl.cnf

[PHP_PEAR_SYSCONF_DIR] => \xampp\php

[PHPRC] => \xampp\php

[TMP] => \xampp\tmp

[HTTP_HOST] => localhost

[HTTP_CONNECTION] => keep-alive

[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31

[HTTP_REFERER] => http://localhost/optionl1/workspace/TP08-05/categorie.php

[HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch

[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8,fr;q=0.6

[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.3

[HTTP_COOKIE] => PHPSESSID=kbpa5h176b347s9qjihssk8055

[PATH] => C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Program Files\Dell\DW WLAN Card;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;D:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;D:\Program Files (x86)\MiKTeX 2.9\miktex\bin\;D:\Program Files\TortoiseSVN\bin

[SystemRoot] => C:\Windows

[COMSPEC] => C:\Windows\system32\cmd.exe

[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

[WINDIR] => C:\Windows

[…]

)

Include Session Header $_SERVER Heredoc Formulaire

Page 26: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 26 / 44

Array (

[…]

[SERVER_SIGNATURE] =>

Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 Server at localhost Port 80

[SERVER_SOFTWARE] => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1

[SERVER_NAME] => localhost

[SERVER_ADDR] => 127.0.0.1

[SERVER_PORT] => 80

[REMOTE_ADDR] => 127.0.0.1

[DOCUMENT_ROOT] => E:/local

[SERVER_ADMIN] => postmaster@localhost

[SCRIPT_FILENAME] => E:/local/optionl1/workspace/TP08-05/apropos.php

[REMOTE_PORT] => 54998

[GATEWAY_INTERFACE] => CGI/1.1

[SERVER_PROTOCOL] => HTTP/1.1

[REQUEST_METHOD] => GET

[QUERY_STRING] =>

[REQUEST_URI] => /optionl1/workspace/TP08-05/apropos.php

[SCRIPT_NAME] => /optionl1/workspace/TP08-05/apropos.php

[PHP_SELF] => /optionl1/workspace/TP08-05/apropos.php

[REQUEST_TIME] => 1366889160

)

Include Session Header $_SERVER Heredoc Formulaire

Page 27: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 27 / 44

Array(

[HTTP_HOST] => deptinfo.unice.fr[HTTP_CONNECTION] => keep-alive[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31[HTTP_REFERER] => http://deptinfo.unice.fr/~renevier/progwebserveur/tps/tp08/TP08-05/[HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8,fr;q=0.6[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.3[HTTP_COOKIE] => PDS_HANDLE=222201391212757617751542237198; __atuvc=9%7C11; __as_rng=true; __as_vr=1; __as_vpv=1; __as_at_visit=0; __as_vra=35; __as_ledt=1363782148348;

__as_lp=http%3A%2F%2Frecherche.unice.fr%2Foutils-1; __as_seg=0-2-3; __utma=49721523.2127123163.1360532063.1363188322.1364290813.4; __utmc=49721523; __utmz=49721523.1364290813.4.2.utmccn=(referral)|utmcsr=google.fr|utmcct=/|utmcmd=referral; renevier-gonin-aspi=26518e947a94c27081c6456e4148f43c; __utma=203280974.2040902378.1364293530.1365085218.1365150981.6; __utmc=203280974; __utmz=203280974.1365150981.6.3.utmcsr=deptinfo.unice.fr|utmccn=(referral)|utmcmd=referral|utmcct=/; renevier-gonin-film=ce5237723b8e07caed7990a5c588107d; PHPSESSID=604a715ec976a2ac5c17555d7b3ee5bf

[PATH] => /usr/local/bin:/usr/bin:/bin[SERVER_SIGNATURE] =>

Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny16 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 mod_perl/2.0.4 Perl/v5.10.0 Server at deptinfo.unice.fr Port 80

[SERVER_SOFTWARE] => Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny16 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 mod_perl/2.0.4 Perl/v5.10.0[SERVER_NAME] => deptinfo.unice.fr[SERVER_ADDR] => 134.59.9.1[SERVER_PORT] => 80[REMOTE_ADDR] => 134.59.9.210[DOCUMENT_ROOT] => /home/www/htdocs/[SERVER_ADMIN] => webmaster@localhost[SCRIPT_FILENAME] => /u/deptinfo/renevier/www/progwebserveur/tps/tp08/TP08-05/apropos.php[REMOTE_PORT] => 55048[GATEWAY_INTERFACE] => CGI/1.1[SERVER_PROTOCOL] => HTTP/1.1[REQUEST_METHOD] => GET[QUERY_STRING] => [REQUEST_URI] => /~renevier/progwebserveur/tps/tp08/TP08-05/apropos.php[SCRIPT_NAME] => /~renevier/progwebserveur/tps/tp08/TP08-05/apropos.php[PHP_SELF] => /~renevier/progwebserveur/tps/tp08/TP08-05/apropos.php[REQUEST_TIME] => 1366889569[argv] => Array

()

[argc] => 0)

Include Session Header $_SERVER Heredoc Formulaire

Page 28: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 28 / 44

Array

(

[HTTP_HOST] => deptinfo.unice.fr

[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31

[HTTP_REFERER] => http://deptinfo.unice.fr/~renevier/progwebserveur/tps/tp08/TP08-05/

[REMOTE_ADDR] => 134.59.9.210

[QUERY_STRING] =>

[REQUEST_URI] => /~renevier/progwebserveur/tps/tp08/TP08-05/apropos.php

[SCRIPT_NAME] => /~renevier/progwebserveur/tps/tp08/TP08-05/apropos.php

[PHP_SELF] => /~renevier/progwebserveur/tps/tp08/TP08-05/apropos.php

[REQUEST_TIME] => 1366889569

)

Include Session Header $_SERVER Heredoc Formulaire

Page 29: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 29 / 44

• Exemple avec nav.php?dossier=politique["QUERY_STRING"] => dossier=politique["REQUEST_URI"] => /optionl1/workspace/TP08-05/nav.php?dossier=politique["SCRIPT_NAME"] => /optionl1/workspace/TP08-05/nav.php["PHP_SELF"] => /optionl1/workspace/TP08-05/nav.php

• Exemple avec nav.php?indice=2.news&dossier=politique["QUERY_STRING"] => indice=2.news&dossier=politique["REQUEST_URI"] => /optionl1/workspace/TP08-05/nav.php?indice=2.news&dossier=politique["SCRIPT_NAME"] => /optionl1/workspace/TP08-05/nav.php["PHP_SELF"] => /optionl1/workspace/TP08-05/nav.php

Include Session Header $_SERVER Heredoc Formulaire

Page 30: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 30 / 44

• Exemple avec /index.php["QUERY_STRING"] =>["REQUEST_URI"] => /optionl1/workspace/TP08-05/index.php["SCRIPT_NAME"] => /optionl1/workspace/TP08-05/index.php["PHP_SELF"] => /optionl1/workspace/TP08-05/index.php

• Exemple avec /["QUERY_STRING"] =>["REQUEST_URI"] => /optionl1/workspace/TP08-05/["SCRIPT_NAME"] => /optionl1/workspace/TP08-05/index.php["PHP_SELF"] => /optionl1/workspace/TP08-05/index.php

• Différences !!• Adresse / fichier de la page (pas des fichiers inclus)

Include Session Header $_SERVER Heredoc Formulaire

Page 31: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 31 / 44

• Permet de savoir la page courante…– Mettre en valeur dans le menu la page en cours

– Attention aux paramètres• Ordre

• Plus ou moins de paramètres

– Gestion progressive• D’abord sans gérer les paramètres (égalité simple entre une

adresse et $_SERVER["PHP_SELF"]

• Puis traitement des paramètres…

• D’autres utilisation (REMOTE_ADDR, Type de navigateur, etc.)

Include Session Header $_SERVER Heredoc Formulaire

Page 32: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 32 / 44

• Une chaine de caractère très longue• http://php.net/manual/fr/language.types.string.php#la

nguage.types.string.syntax.heredoc• Fin du HEREDOC commence à la colonne 0 (pas

d’indentation, tout à gauche)

$nav = <<<"EOD"<nav>

<ul><li>$lien</li><li><form action="{$_SERVER['PHP_SELF']}" method="post">

<input type="submit" name="deconnexion" value="se deconnecter" />

</form></li>

</ul></nav>

EOD;

Include Session Header $_SERVER Heredoc Formulaire

Page 33: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 33 / 44

Entrer des données depuis un navigateur

Include Session Header $_SERVER Heredoc Formulaire

Page 34: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 34 / 44

• Envoi de données

– depuis le navigateur

– Pour traitement dans le serveur

• Deux façons de faire

– Passage des informations dans l’url (méthode GET, déjà utilisée)

– Passage des informations dans la requête (méthode POST)

• Attention : ce n’est pas sécurisé

Include Session Header $_SERVER Heredoc Formulaire

Page 35: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 35 / 44

<form action="page.php" method="post">

<fieldset>

<legend>Placez une alerte</legend>

<p>Message de l'alerte : <input type="text" name="alerte" /></p>

<input type="submit" name="setalerte" value="declenchez l'alerte"

/>

</fieldset>

</form>

Include Session Header $_SERVER Heredoc Formulaire

Page 36: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 36 / 44

if (isset($_POST["setalerte"]))

{

$alerte = rawurlencode(trim($_POST["alerte"]));

file_put_contents("alerte.txt", $alerte);

}

<form action="page.php" method="post">

<fieldset>

<legend>Placez une alerte</legend>

<p>Message de l'alerte : <input type="text" name="alerte" /></p>

<input type="submit" name="setalerte" value="declenchez l'alerte"

/>

</fieldset>

</form>

Include Session Header $_SERVER Heredoc Formulaire

Page 37: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 37 / 44

• text : champs d’entrée de texte.

• password : l’écho sont des ‘*’. sécutité pauvre.

• checkbox

• radio (radiobutton)

• submit : un bouton pour envoyer

• image : un bouton submit graphique. Attribut src donne l’URI de l’image. Utiliser l’attribut alt. Les coordonnées du clic sont passés au server sous la forme name.x et name.y– problème d’accéssibilité : navigateur non graphique, clic difficile, etc.

– à remplacer par plusieurs boutons submit ou par des scripts côtés client.

• reset (bouton).

• button : bouton sans comportement prédéfini (script)

• hidden : champs caché (parfois utile pour passer une valeur masquée)

• file : sélection d’un fichier

• + type html 5 : date, email, etc.

Include Session Header $_SERVER Heredoc Formulaire

Page 38: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 38 / 44

• Balise vide

• Attributs– type

– name : nom de contrôle (très important)

– value (valeur initiale ou libellé) : optionnel sauf pour radio et checkbox

– size (en pixel sauf pour text et password où c’est un nombre de caractère)

– maxlength : pour text ou password : nombre de caractères maximum

– checked : pour radio et checkbox

– src : pour image : la source (ne pas oublier alt)

Include Session Header $_SERVER Heredoc Formulaire

Page 39: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 39 / 44

• select : menu– ( optgroup | option )+ – attributs

• name : nom de contrôle• size (nombre) : nombre d’éléments visibles pour une scroll list• multiple (pas de valeur) : permet la sélection multiple

• option– #pcdata (texte)– attributs

• selected : pour présélectionner l’élément• value (texte) : pour donner une valeur autre que le texte (#pcdata)• label (texte) : pour faire apparaître un autre nom (plus court) à la charge du

navigateur !! (pas sûr que cela fonctionne !!)• optgroup

– regrouper les options : (option)+– attribut : label (texte) : libellé

Include Session Header $_SERVER Heredoc Formulaire

Page 40: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 40 / 44

• Champs d’entrée sur plusieurs lignes

• textarea

– #PCDATA : texte initiale

– Attributs

• name : nom de contrôle

• cols : nombre de colonne

• rows : nombre de ligne

Include Session Header $_SERVER Heredoc Formulaire

Page 41: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 41 / 44

• Permet d’associer un texte à un élément de formulaire sans texte

– inline

– Start tag: required, End tag: required

• Attaché par l’attribut for

– Valeur = id d’un champ de contrôle

Include Session Header $_SERVER Heredoc Formulaire

Page 42: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 42 / 44

<form action="" method="post" id="ajouterarticle" style="float: left;margin-right: 2em;"><fieldset>

<legend>Ajouter une news</legend>

<select name="categorie"><option value='france' >france</option><option value='monde' >monde</option><option value='politique' >politique</option><option value='sports' >sports</option>

</select><br />

<label for="titre">titre : </label><input type="text" name="titre" value='' /><br /><label for="auteur">auteur : </label><input type="text" name="auteur" value='' /><br /><label for="texte">texte : </label><textarea name="texte"></textarea ><br /><input type="submit" /></fieldset>

</form>

Include Session Header $_SERVER Heredoc Formulaire

Page 43: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 43 / 44

• Page qui reçoit le formulaire : attribut « action » du form

• Valeur(s) accessible(s) par :

- tableau associatif : index est l’attribut « name » de l’input

• $_POST ou $_GET sont des « superglobales »

• Un peu de sécurité

– trim(htmlspecialchars(addslashes( ) ) )

– str_replace pour remplacer des caractères « spéciaux »

– Tests complémentaires…

• Les valeurs peuvent être des tableaux (si le name de l’input est du style nom[]

Include Session Header $_SERVER Heredoc Formulaire

Page 44: Interface Post-WIMP et Paradigmes d’interactiondeptinfo.unice.fr/~renevier/progwebserveur/cours/04. Include... · 2015-2016 Philippe Renevier Gonin - Cinclude - session - form -

Pro

g Web

Server -2

01

5-2

01

6

Philippe Renevier Gonin - Cinclude - session - form - Prog Web Serveur 44 / 44

// si toutes les valeurs du formulaires sont bien présentesif (isset($_POST["titre"],$_POST["auteur"],$_POST["texte"],$_POST["categorie"])){// et si elles sont toutes remplies avec quelques chosesif ($_POST["titre"] && $_POST["auteur"]

&& $_POST["texte"] && $_POST["categorie"]){// on prépare le contenu de la nouvelle / article$article = trim($_POST["titre"]) . "\n";$article .= trim($_POST["auteur"]) . "\n";$article .= trim($_POST["texte"]) ;// il faut déterminer un nom de fichier$nomFichier = "news/".$_POST["categorie"]."/".$_POST["titre"].".news";// si le fichier n’existe pas...if (! file_exists($nomFichier) )

{// ... il est crééfile_put_contents($nomFichier, $article);}

}}

Include Session Header $_SERVER Heredoc Formulaire