X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;ds=inline;f=unix_prog_web%2Funix_prog_web_07.xhtml;h=c0762b9247f4f232961b2bbb3b8dc3b3cccf9309;hb=e710b4da74b3fb2ffc4af8f6251ed5ad1b0476b1;hp=73d92d164e91096949640a3afa24624b7611b996;hpb=0a552a95e70324a04e9d06bd30ac5bc96b2a58b5;p=hacks%2FsimpleWebSlides.git diff --git a/unix_prog_web/unix_prog_web_07.xhtml b/unix_prog_web/unix_prog_web_07.xhtml index 73d92d1..c0762b9 100644 --- a/unix_prog_web/unix_prog_web_07.xhtml +++ b/unix_prog_web/unix_prog_web_07.xhtml @@ -4,12 +4,12 @@ >
-Les fonctions sont déclarées à l'aide du - mot-clé function. On renvoie des résultats à - l'aide du mot-clé return.
-function double ($x)
- {
- return $x + $x;
- }
-
- echo double(10);
- ]]>
-
- <?php
- $a = 42;
- function add_a($x)
- {
-
- return $x + $a;
- }
- echo add_a(10);
- ?>
-
- <?php
- $a = 42;
- function add_a($x)
- {
- global $a;
- return $x + $a;
- }
- echo add_a(10);
- ?>
-
- Le code de gauche affiche 10 ! - Les variables ont une portée locale - par défaut. Si $a n'est pas définie dans le corps de la - fonction, sa valeur est NULL - (variable non définie). Pour référencer - des variables globales, on utilise le mot clé global. -
-On peut utiliser une fonction « avant » de la définir :
<?php
- echo next(10);
- echo <br/>;
-
- function next($x)
- {
- return $x + 1;
- }
- ?>
- On définira toujours des fonctions avant de - les utiliser. On ne peut pas définir deux fonctions avec le même - nom. -
-On utiliser le modificateur & devant - un paramètre de fonction pour indiquer que ce dernier est passé - par référence.
-<?php
- function add_a($tab)
- {
- $tab["a"] = 42;
- }
-
- $mytab = array();
- add_a($mytab);
- echo $mytab["a"];
- //n'affiche rien (car NULL â "")
-?>
- <?php
- function add_a(&$tab)
- {
- $tab["a"] = 42;
- }
-
- $mytab = array();
- add_a($mytab);
- echo $mytab["a"];
- //affiche 42
-?>
- Lorsque l'on veut modifier un argument de la - fonction (plutot que de renvoyer une version modifiée, par - ex. mise à jour d'un tableau, d'une chaîne, â¦), on doit le - passer par référence. -
-<?php
- $chaine = "ABCDEFABCDEF";
- echo preg_match('/ABC/', $chaine); // affiche 1
- echo preg_match('/DEF/', $chaine); // affiche 1
- echo preg_match('/^ABC/', $chaine); // affiche 1
- echo preg_match('/^DEF/', $chaine); // affiche 0
- echo preg_match('/ABC$/', $chaine); // affiche 0
- echo preg_match('/DEF$/', $chaine); // affiche 1
- echo preg_match('/(ABC...)+/', $chaine); // affiche 1
- echo preg_match('/[^A-Z]+/'); // affiche 0
- echo preg_match('/[^A-Z]*/'); // affiche 1 !
- echo preg_match('/^[^A-Z]*$/'); // affiche 0
+ $chaine = "ABCDEFABCDEF";
+ echo preg_match('/ABC/', $chaine); // affiche 1
+ echo preg_match('/DEF/', $chaine); // affiche 1
+ echo preg_match('/^ABC/', $chaine); // affiche 1
+ echo preg_match('/^DEF/', $chaine); // affiche 0
+ echo preg_match('/ABC$/', $chaine); // affiche 0
+ echo preg_match('/DEF$/', $chaine); // affiche 1
+ echo preg_match('/(ABC...)+/', $chaine); // affiche 1
+ echo preg_match('/[^A-Z]+/', $chaine); // affiche 0
+ echo preg_match('/[^A-Z]*/', $chaine); // affiche 1 !
+ echo preg_match('/^[^A-Z]*$/', $chaine); // affiche 0
?>
Renvoie un tableau avec une case par ligne dans le fichier. Chaque entrée contient le "\n" terminal.
GET /~kn/index.html HTTP/1.1
+Host: www.lri.fr
+
HTTP/1.1 200 OK
+Server: nginx/1.4.1 (Ubuntu)
+Date: Sun, 17 Nov 2013 16:44:48 GMT
+Content-Type: text/html
+Content-Length: 2038
+
+ Homepage
+
+ â¦
+]]>
+
+} â code de retour
+
+
+} â type de contenu
+} â longueur du contenu
+} â contenu (2038 octets)
+
+GET /~kn/fichier.pdf HTTP/1.1
+Host: www.lri.fr
+
HTTP/1.1 200 OK
+Server: nginx/1.4.1 (Ubuntu)
+Date: Sun, 17 Nov 2013 16:44:48 GMT
+Content-Type: application/pdf
+Content-Length: 103449
+>
+stream
+â¦â¦â¦
+ ]]>
+
+
+Fichier notes_csv.php:
+ <?php
+ header('Content-type: application/csv');
+ header('Content-Disposition: attachement; filename="notes.csv"');
+ echo "Nom, Note\n";
+ foreach ($NOTES as $nom => $note)
+ echo $nom . ", " . $note . "\n";
+
+ ?>
+⚠ Attention!
+En tête utilisés par le serveur dans ses réponses
+En tête utilisés par le client dans ses requêtes
+On rappelle que HTTP est un protocole stateless + (sans état, i.e. le serveur Web ne conserve pas d'information + entre les connexions). Quel problème cela pose-t-il ?
+â difficle de réaliser une « application » + moderne répartie sur plusieurs pages
+Un cookie est un paquet de données envoyé par le + serveur, stocké par le client (navigateur Web) et renvoyé au serveur + lors d'une nouvelle connexion. Les propriétés d'un cookie sont: +
+⚠ Attention! seul le domaine qui a + déposé le cookie est capable de le relire
+Créer ou mettre à jour un cookie sur le client:
+
+ setcookie($nom, $val, $date);
+
+(on peut récupérer le nombre de secondes depuis epoch avec
+ la fonction time()).
+ Exemple:
+
setcookie("mon_cookie", "42", time() + 3600 * 24 * 30);
+Représenter le temps (une date) dans un programme informatique est + quelque chose de compliqué. Quels problèmes cela pose-t-il ? +
+Ce n'est pas encore quelque chose de bien maîtrisé !
+On peut récupérer la valeur d'un cookie depuis PHP: +
+ $_COOKIE["mon_cookie"]
+ Un cookie "foo" existe (i.e. a été défini + auparavant) si une entrée correspondante existe dans le tableau + global $_COOKIE. On peut tester qu'une entrée + existe dans un tableau avec isset(). +
+⚠ Attention!
+Une session HTTP est un ensemble de requêtes/réponses HTTP
+ entre un serveur et un même client.
+ Exemple d'un sondage en ligne:
+
Pour programmer une application Web, on souhaîte avoir accès à + des variables de session c'est à dire des variables qui + sont: +
+Les variables de sessions sont donc propres à chaque client et + persistent le temp de la session (le temps de session est décidé par + le serveur)
+On initie une session avec la fonction:
+ session_start();
+ Une fois appelée, la variable $_SESSION + contient un tableau que l'on peut utiliser entre plusieurs + pages. Les valeurs contenues dans le tableau persistent jusqu'à la + fin de la session. Une session se termine: +
+⚠ + Attention! session_start() doit être appelé + avant le premier echo du fichier.
+
+ <?php /* Fichier page1.php */
+ session_start();
+ $_SESSION["Valeur"] = 42;
+ ?>
+
+
+ Veuillez cliquer sur le "page2.php"lien
+
+
+]]>
+
+
+ La valeur est echo $_SESSION["Valeur"];
+
+
+
+]]>
+Mélange de variables de sessions, cookies et bases de données.
+ Scénario réaliste: site de commerce en ligne
+
Pourquoi ?
+