39
Support de TP PHP IRSII 2013-2014 Support de cours PHP Page 1 Support proposé par C. Dabancourt, inspiré aussi par des exemples et tutoriels Internet 1 PHP SEANCE N°1 INTRODUCTION A PHP ............................................................................................... 4 1.1 LE PRINCIPE DU PHP (10’) .................................................................................................................................. 4 1.2 L'ENVIRONNEMENT (1H) ..................................................................................................................................... 4 1.2.1 Les outils .................................................................................................................................................. 4 1.2.1.1 Configurer la machine « LPIRSII » ...................................................................................................................... 4 1.2.1.2 Lancer la machine virtuelle................................................................................................................................... 6 1.2.1.3 Configurer VirtualBox .......................................................................................................................................... 6 1.2.1.4 En cas de problème ............................................................................................................................................... 7 1.2.1.5 En cas de problème (cf windows) ......................................................................................................................... 7 1.2.2 Le traitement de texte (coté client) ........................................................................................................... 7 1.2.3 PHP en ligne de commande ..................................................................................................................... 8 1.3 CONFIGURER LINTERFACE RESEAU DE MANIERE PERMANENTE ......................................................................... 9 1.4 UTILISATION DE LA DOC ..................................................................................................................................... 9 1.4.1 Si vous n’avez pas internet : installation de la doc (10’) ......................................................................... 9 1.4.2 Si vous avez Internet................................................................................................................................. 9 1.4.3 Trouver les fonctions ................................................................................................................................ 9 1.5 SERIE DEXERCICE EXEMPLES DE PROGRAMMES PHP (3H)................................................................................ 9 1.5.1 Exercice n°1 : les variables (20’) ........................................................................................................... 10 1.5.2 Les chaînes de caractères (utilisation des fonctions) ............................................................................. 10 1.5.2.1 Fonction str_replace............................................................................................................................................ 10 1.5.2.2 Fonction fgets ..................................................................................................................................................... 10 1.5.3 Les conditions......................................................................................................................................... 10 1.5.4 les boucles (for et while) ........................................................................................................................ 11 1.5.5 Exercice n°5 : les tableaux (foreach) ..................................................................................................... 11 1.5.6 Les tableaux associatifs .......................................................................................................................... 11 1.5.7 Les fonctions........................................................................................................................................... 11 1.5.8 Les dates ................................................................................................................................................. 11 1.5.9 Portée des variables (include) ................................................................................................................ 12 1.5.10 Lire/écrire un nombre dans un fichier texte ...................................................................................... 12 2 PHP SEANCE N°2 PASSER DES VARIABLES ......................................................................................... 13 2.1 TESTER APACHE DEPUIS UN NAVIGATEUR......................................................................................................... 13 2.2 PHP POUR CREER UN SITE WEB ......................................................................................................................... 13 2.2.1 Créer l’utilisateur webadmin ................................................................................................................. 13 2.2.1.1 Voici la méthode pour créer le « webadmin » .................................................................................................... 13 2.2.1.2 Les droits sur le dossier /var/www...................................................................................................................... 14 2.2.2 Le programme de base « bonjour »........................................................................................................ 14 2.2.3 Exercices sur le navigateur .................................................................................................................... 14 2.3 PHP ET LE HTML (30’) .................................................................................................................................... 15 2.3.1 Les variables d’environnement .............................................................................................................. 15 2.3.2 Exercice n°2 : les boucles (for et while) ................................................................................................. 15 2.4 EXERCICE N°3 : PASSAGE DE VALEURS ENTRE 2 PAGES DANS UN SITE (1H)....................................................... 15

Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 1

Support proposé par C. Dabancourt, inspiré aussi par des exemples et tutoriels Internet

1 PHP SEANCE N°1 – INTRODUCTION A PHP ............................................................................................... 4

1.1 LE PRINCIPE DU PHP (10’) .................................................................................................................................. 4 1.2 L'ENVIRONNEMENT (1H) ..................................................................................................................................... 4

1.2.1 Les outils .................................................................................................................................................. 4 1.2.1.1 Configurer la machine « LPIRSII » ...................................................................................................................... 4 1.2.1.2 Lancer la machine virtuelle ................................................................................................................................... 6 1.2.1.3 Configurer VirtualBox .......................................................................................................................................... 6 1.2.1.4 En cas de problème ............................................................................................................................................... 7 1.2.1.5 En cas de problème (cf windows) ......................................................................................................................... 7

1.2.2 Le traitement de texte (coté client) ........................................................................................................... 7 1.2.3 PHP en ligne de commande ..................................................................................................................... 8

1.3 CONFIGURER L’INTERFACE RESEAU DE MANIERE PERMANENTE ......................................................................... 9 1.4 UTILISATION DE LA DOC ..................................................................................................................................... 9

1.4.1 Si vous n’avez pas internet : installation de la doc (10’) ......................................................................... 9 1.4.2 Si vous avez Internet ................................................................................................................................. 9 1.4.3 Trouver les fonctions ................................................................................................................................ 9

1.5 SERIE D’EXERCICE – EXEMPLES DE PROGRAMMES PHP (3H) ................................................................................ 9 1.5.1 Exercice n°1 : les variables (20’) ........................................................................................................... 10 1.5.2 Les chaînes de caractères (utilisation des fonctions) ............................................................................. 10

1.5.2.1 Fonction str_replace ............................................................................................................................................ 10 1.5.2.2 Fonction fgets ..................................................................................................................................................... 10

1.5.3 Les conditions ......................................................................................................................................... 10 1.5.4 les boucles (for et while) ........................................................................................................................ 11 1.5.5 Exercice n°5 : les tableaux (foreach) ..................................................................................................... 11 1.5.6 Les tableaux associatifs .......................................................................................................................... 11 1.5.7 Les fonctions ........................................................................................................................................... 11 1.5.8 Les dates ................................................................................................................................................. 11 1.5.9 Portée des variables (include) ................................................................................................................ 12 1.5.10 Lire/écrire un nombre dans un fichier texte ...................................................................................... 12

2 PHP SEANCE N°2 – PASSER DES VARIABLES ......................................................................................... 13

2.1 TESTER APACHE DEPUIS UN NAVIGATEUR ......................................................................................................... 13 2.2 PHP POUR CREER UN SITE WEB ......................................................................................................................... 13

2.2.1 Créer l’utilisateur webadmin ................................................................................................................. 13 2.2.1.1 Voici la méthode pour créer le « webadmin » .................................................................................................... 13 2.2.1.2 Les droits sur le dossier /var/www ...................................................................................................................... 14

2.2.2 Le programme de base « bonjour » ........................................................................................................ 14 2.2.3 Exercices sur le navigateur .................................................................................................................... 14

2.3 PHP ET LE HTML (30’) .................................................................................................................................... 15 2.3.1 Les variables d’environnement .............................................................................................................. 15 2.3.2 Exercice n°2 : les boucles (for et while) ................................................................................................. 15

2.4 EXERCICE N°3 : PASSAGE DE VALEURS ENTRE 2 PAGES DANS UN SITE (1H)....................................................... 15

Page 2: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 2

2.4.1 La méthode GET (15’) ............................................................................................................................ 15 2.4.2 La méthode POST (15’) .......................................................................................................................... 15 2.4.3 Valeur passée entre Trois pages (30’).................................................................................................... 15 2.4.4 Exercice n°4 : les formulaires HTML (1h) ............................................................................................ 16

EXERCICE N°4 : DEUX PAGES : LE JEU « PLUS GRAND-PLUS PETIT » (2H) .................................................................... 16 CONFIGURATION DU SERVEUR APACHE-PHP : AFFICHER LES MESSAGES D’ERREUR .................................................... 16

2.4.5 Jeu avec formulaire « hidden » .............................................................................................................. 16 2.4.6 Utilisation de session simple php (le panier !) ....................................................................................... 17 2.4.7 Jeu avec SESSION php ........................................................................................................................... 17

2.5 RECUPERER VOS PROGRAMMES ........................................................................................................................ 17 2.6 PHP A L’HEURE DU HTML5 ............................................................................................................................. 18

3 PHP SEANCE N°3 – PHP ET MYSQL ............................................................................................................ 19

3.1 INSTALLER PHPMYADMIN SUR LE SERVEUR ................................................................................................ 19 3.2 EXERCICE N°1 : LIRE UN FICHIER DE FORMAT « CSV » ....................................................................................... 19 3.3 EXERCICE N°2 : CONNEXION-DECONNEXION A UNE BDD MYSQL (1 SEULE TABLE) .......................................... 19 3.4 SELECT-DELETE-UPDATE-INSERT .......................................................................................................... 20

3.4.1 Exercice n°1 : select dans un tableau – 1 page ...................................................................................... 20 3.4.2 Exercice n°2 : gestion des erreurs SQL ................................................................................................. 21 3.4.3 Exercice n°3 : Insert – 2 pages .............................................................................................................. 21 3.4.4 Exercice n°4 : Delete – 1 page ............................................................................................................... 21 3.4.5 Exercice n°5 : Update – 2 pages ............................................................................................................ 21 3.4.6 Exercice n°6 : Tout mettre sur une seule page ....................................................................................... 21

3.5 CONFIGURATION APACHE ................................................................................................................................ 21 3.5.1 Configuration coté serveur ..................................................................................................................... 21 3.5.2 Vérification coté serveur ........................................................................................................................ 22 3.5.3 Vérification coté Client .......................................................................................................................... 22

3.6 EXERCICE N°6 : LES MAGIC QUOTES ................................................................................................................ 23

4 PHP SEANCE N°4 – STRUCTURER UN PROJET – 4H .............................................................................. 24

4.1 EXERCICE N°1 : STRUCTURE D’UNE APPLICATION (POUR DEPLOIEMENT/MAINTENANCE FACILITE) .................. 24 4.2 EXERCICE N°2 : ENTRER PAR UNE SEULE PORTE ............................................................................................... 24 4.3 EXERCICE N°2 : CONFIGURER APACHE ............................................................................................................. 24

4.3.1 Mode réécriture de l’url ......................................................................................................................... 24 4.3.2 fichier .htaccess ...................................................................................................................................... 24

4.4 EXERCICE N°8 : PROTEGER DES PAGES - SESSION .............................................................................................. 25

5 PHP SEANCE N°5 - PROJET – 4H ................................................................................................................. 26

5.1 PROJET A REALISER. TROMBINOSCOPE ............................................................................................................. 26 5.1.1 Faire un dessin précis du site (avec des flèches pour indiquer le passage d’information, le nom et le

numéro associé de chaque page) .......................................................................................................................... 26 5.1.2 Définir la table SQL et la créer dans une BDD « trombinoscope ». ...................................................... 26 5.1.3 Définir et écrire les pages php. .............................................................................................................. 26

6 PHP SEANCE N°6 – DEVOIR = 2H (VERSION 2008) .................................................................................. 28

6.1 DEVOIR PAPIER : ECRIRE 3 ALGORITHMES ........................................................................................................ 28 6.2 DEVOIR MACHINE : ECRIRE 2 ALGORITHMES .................................................................................................... 28

7 PHP SEANCE N°7 – LILBRAIRIE FPDF = 2H ............................................................................................. 29

7.1 EXERCICE N°1 : UTILISATION DE LA CLASSE FPDF ............................................................................................ 29 7.2 INSTALLEZ ET TESTEZ LA CLASSE FPDF ET SES EXEMPLES ................................................................................. 29

7.2.1 Utilisation de la classe fpdf .................................................................................................................... 29 7.2.2 Exercice n°2 : Utilisation de la classe fpdf ............................................................................................ 29

8 PHP SEANCE N°8 – AJAX, JQUERY ET PHP – 4H .................................................................................... 30

8.1 AJAX AVEC JQUERY ......................................................................................................................................... 30 8.1.1 Exemple à tester ..................................................................................................................................... 30 8.1.2 Exemple à tester pour retourner un tableau à 2 colonnes : ................................................................. 30 8.1.3 Votre premier programme ajax avec php ............................................................................................... 31 8.1.4 Conseil : comment trouver les erreurs dans un page ajax ? .................................................................. 31

Page 3: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 3

8.1.5 Exercice avec deux pages : le jeu « plus grand-plus petit » avec Ajax .................................................. 31 8.2 VISUALISER DES TABLES AVEC DATATABLES .................................................................................................. 31 8.3 AFFICHER DES POP-UP DYNAMIQUES ................................................................................................................. 33 8.4 EXERCICE N°4 : REPRENDRE L’APPLICATION « TROMBINOSCOPE ». .................................................................. 34

9 PHP SEANCE N°9 – TRANSACTION & ADODB......................................................................................... 35

9.1 LA BANQUE – LES TRANSACTIONS ..................................................................................................................... 35 9.2 ANALYSER LE CORRIGE DU TP6 ....................................................................................................................... 35 9.3 ANALYSER LE CORRIGE DU TP3 : L’ADAPTER A ADODB ................................................................................. 35 9.4 REPRENDRE LE CORRIGE DU TROMBINOSCOPE : L’ADAPTER A ADODB ........................................................... 35 9.5 PROJET – GESTION DE BATEAUX ....................................................................................................................... 35

10 PHP SEANCE N°10 – SMARTY ...................................................................................................................... 37

10.1 EXERCICE N°0 : TESTER SMARTY ............................................................................................................. 37 10.2 EXERCICE N°1 : TESTER LES EXEMPLES SMARTY ...................................................................................... 37 10.3 EXERCICE N°2 : REPRENDRE TROMBINOSCOPE AVEC SMARTY .................................................................. 37 10.4 EXERCICE N°3 : PROJET – GESTION DE BATEAUX AVEC SMARTY ............................................................... 37

11 PHP SÉANCE N°11 - CMS – 2H ...................................................................................................................... 38

11.1 EXERCICE N°1 : LES CMS ............................................................................................................................ 38 11.2 EXERCICE N°2 : FAIRE UN SITE AVEC SPIP ................................................................................................... 38

11.2.1 Création du site ................................................................................................................................. 38 11.2.2 Structuration et données du site : ...................................................................................................... 38 11.2.3 La mise en forme du site (squelette) .................................................................................................. 38

11.3 EXERCICE N°3 : INSERER UNE PAGE PHP DANS SPIP...................................................................................... 38 11.4 EXERCICE N°4 : VOUS POUVEZ ESSAYER DE FAIRE LE MEME TRAVAIL AVEC JOOMLA .................................. 38

12 PHP SEANCE N°12 – UTILISATION D’OUTILS PHP ................................................................................ 39

12.1 PHPCHECKSTYLE ....................................................................................................................................... 39 12.2 INSERER GOOGLEMAP EN PHP .................................................................................................................... 39 12.3 AJAXTERM : UN XTERM VIA LE WEB ............................................................................................................ 39 12.4 GLPI ............................................................................................................................................................ 39

Page 4: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 4

1 PHP Séance n°1 – introduction à PHP (13 exercices corrigés) vous pouvez consulter http://fr.php.net/tut.php

1.1 Le principe du PHP (10’)

http://fr.wikipedia.org/wiki/PHP

1.2 L'environnement (1h)

1.2.1 Les outils

En local (tout sur votre ordinateur : plus rapide !) :

o Un éditeur de texte (Notepad++, Dreamwaver disponible à l’iut))

o une machine Virtuelle « VirtualBox »

o Un navigateur

Sur un Serveur Distant (en production !)

o Un serveur WEB distant avec PHP et un serveur FTP

o Un éditeur de texte

o Un client FTP (pour déposer les fichiers php)

o un accès en mode terminal (xterm = terminal X)

Sur le client, sous windows (ou linux), vous avez le programme « VirtualBox »

Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php), les pages sont dans le dossier /var/www/

(configuration de apache).

1.2.1.1 Configurer la machine « LPIRSII »

Copier le dossier « LPIRSII » en local (clé USB ou DD ou DD externe).

Lancer le logiciel « VirtualBox », choisissez le menu [Fichier][Importer] pour choisir le fichier du dossier

LPIRSII.

Page 5: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 5

Figure 1 : configurer le réseau de la machine Virtuelle « LPIRSII »

1. Dans la configuration de l’USB, décochez la case « Enable USB 2.0 (EHCI) controller »

2. Cliquer sur la partie droite [Réseau…]

VirtualBox possède 5 modes réseau: (cf http://www.commentcamarche.net/faq/3759-vmware-et-virtualbox-les-

differents-types-de-reseau)

Non attaché : équivaut à une interface Ethernet sur laquelle aucun câble n'est connecté

NAT : Identique au mode NAT de VMWare.

Adaptateur réseau hôte : Identique au mode Host-only de VMWare, à l'exception de VirtualBox qui ne

fournit pas de serveur DHCP sur ce réseau privé virtuel. Il vous faudra donc configurer les adresses IP à

la main ou bien utiliser un serveur DHCP sur votre machine hôte (machine physique). (Sous Windows, il

y a tftpd32)

Réseau interne : Les machines virtuelles sont reliées entre elles mais isolées de l'extérieur

Bridge (ou "accès par pont"), qui correspond au mode "Bridged" de VMWare: les machines virtuelles

peuvent communiquer totalement entre elles vers l'extérieur via la machine hôte.

Ici, on choisira

le réseau NAT pour la « Carte 1 »

ET le « réseau hôte » (ou host-only adapter) pour la « Carte 2 » (bien activer la carte 2 !)

Page 6: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 6

1.2.1.2 Lancer la machine virtuelle

Pour se connecter : « irsii », « irsii »

Pour passer « root » : $ sudo su (avec le mot de passe « irsii »)

Pour mettre le clavier du serveur en français : $ sudo loadkeys fr (avec le mot de passe « irsii »)

1.2.1.3 Configurer VirtualBox

1. Cliquer sur [Installer les Additions invité…]

Vous devez créer un réseau local entre votre ordinateur (client) et le serveur ubuntu.

Sur Client Windows, tapez « ipconfig » en ligne de commande (dans le menu démarrer, en bas à gauche,

tapez « cmd » et un terminal s’ouvrira).

Carte Ethernet VirtualBox Host-Only Network : Suffixe DNS propre à la connexion. . . : Adresse IPv6 de liaison locale.: fe80::fc6b:e450:4e20:8b1e%33 Adresse IPv4. . . . . . . . . . . . . .: 192.168.56.1 Masque de sous-réseau. . . . . . . . . : 255.255.255.0 Passerelle par défaut. . . . . . . . . :

Sur serveur ubuntu, tapez $ ifconfig ,

Puis en root, tapez $ ifconfig eth1 192.168.56.101

Page 7: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 7

Testez le ping entre le client Windows (cmd, puis « ping 192.168.56.101 ») et le serveur Linux.

Rq : si le Windows a un pare-feu : le ping sur linux vers 192.168.56.1 NE FONCTIONNE PAS.

En cas de gros problem (ifconfig eth1 ne marche pas !): cherchez le fichier:

/etc/udev/rules.d/ et effacez celui qui à le suffixe “-persistent-net.rules”, on my Ubuntu 9.04 it’s “70-persistent-

net.rules” – Redémarre la machine virtuelle et recommencez le “ifconfig”

1.2.1.4 En cas de problème

En root, sur le serveur : root$ rm /etc/udev/rules/*

Relancer le serveur root$ reboot

1.2.1.5 En cas de problème (cf windows)

Vérifier sous windows avec « ipconfig » l’adresse de la virtualBox :

1.2.2 Le traitement de texte (coté client)

a. Si notepad++ est en anglais, le mettre en français.

Menu [settings][Preference], onglet [General], choisir “français” dans le menu [localization].

b. menu « langage » : choisir « PHP »

c. ouvrir et configurer l’option FTP

Page 8: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 8

Figure 2 : configurer un profil "irsii"

Figure 3 : Le login = « irsii » et le mot de passe = « irsii ».

Pour se connecter :

Figure 4 : se connecter

Vous pouvez alors modifier / sauver les fichiers du dossier.

1.2.3 PHP en ligne de commande

Page 9: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 9

Langage PHP est un langage de script utilisé par les administrateurs système, tout comme le perl et le python.

Pour écrire un script, je vous le conseille : sa syntaxe est « plus simple » que celle du perl, et il fournit plus de

librairie que le bash (accès ldap…)

A faire : écrire le programme « /home/irsii/TP1/bonjour1.php » suivant (sur le serveur ubuntu) :

<?php echo " bonjour " ; print " tout le monde "; ?>

A faire : aller sur le terminal du serveur (utilisateur irsii, dossier /home/irsii), et testez :

irsii$ cd /home/irsii/TP1/ irsii$ php bonjour.php

1.3 Configurer l’interface réseau de manière permanente

En étant connecté en administrateur (root), modidier (avec vi ou nano directement sur le serveur, ou avec

notepad++ depuis le client) le fichier « /etc/network/interfaces » en ajoutant les lignes suivantes :

auto eth1 iface eth1 inet static address 192.168.56.101 netmask 255.255.255.0

Et relancer le réseau… (Selon la version supportée par le serveur)

/etc/init.d/networking restart

Service networking restart

1.4 Utilisation de la doc

1.4.1 Si vous n’avez pas internet : installation de la doc (10’)

Décompresser le fichier « php_manual_fr.tar.gz ».

Installer la doc PHP :, au format HTML directement sur l’ordinateur client (windows) dans un dossier de votre

choix, avec un lien dans « les favoris » de votre navigateur.

1.4.2 Si vous avez Internet

Moteur de recherche…

1.4.3 Trouver les fonctions

Tout en bas de la 1ere page, vous accédez à la liste des fonctions du langages.

Ensuite, avec la fonction « recherche » de votre navigateur, accédez par exemple à la fonction « str_replace ».

1.5 Série d’exercice – exemples de programmes php (3h)

Page 10: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 10

Vous pouvez consulter la documentation, et particulièrement l’« Index des fonctions »

Les programmes seront testés directement sur le serveur avec la commande :

irsii:/home/irsii/TP1/$ php exercice1.php

1.5.1 Exercice n°1 : les variables (20’)

Les variables sont définies par le caractère « $ ». Elles ne sont pas typées.

Définir et afficher les variables suivantes :

$a= 1 ; // un commentaire $b= 21.55 ; $c= 22,66 ; // erreur $d= $a + $b ; $e= " attention \n"; $f= " à vous"; $g= $e.$f ; $h= " le resultat = ". $a+$b ; $i= $a<$b ; echo ”a= $a \n” ; print ”a= $a \n” ; echo ”a= ”.$a. ” \n” ; printf(”a= %d \n”, $a) ;

rq : il y a une erreur (21.55). Remarquez à l’avant dernière ligne l'usage du « . » pour accoler (juxtaposer) plusieurs

valeurs.

En utilisant la documentation, ajoutez quelques lignes au programme précédent pour tester les fonctions

« isset », « unset », « empty », « is_null »

De même, testez « is_numeric », « is_int », « is_string », « ctype_digit ».

1.5.2 Les chaînes de caractères (utilisation des fonctions)

Utilisation de la documentation (fichier php_manual_fr.tar) !!

Lire toute la liste des fonctions traitant des chaînes de caractères « str… » (prendre 10’).

1.5.2.1 Fonction str_replace

Dans un fichier « exercice2a.php », définir la chaîne de caractère suivante :

$ch1 = " Au début, ils rient de vous, ensuite ils vous combattent, et à la fin, vous gagnez";

Utilisez les fonctions de chaînes uniquement pour afficher $ch1 :

" Au tout début, ils rient, ensuite ils vous combattent, et à la fin, vous GAGNEZ";

1.5.2.2 Fonction fgets

Dans un fichier « exercice2b.php », qui va lire le fichier texte (« exercice1.php ») et l’écrire à l’écran en majuscule.

Pour cela, vous utiliserez l’exemple de doc pour la fonction « fgets » pour lire un fichier ligne par ligne.

1.5.3 Les conditions

Structure conditionnelle : RESPECTER TOUJOURS L’INDENTATION !!

if (condition1){ // }else if (condition2){ // }else{ // }

Page 11: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 11

Vous pouvez aussi l’écrire

if (condition1) { // } else if (condition2) { // } else { // }

Dans un fichier « exercice3.php », définir une valeur numérique au début (une variable note entre 0 et 20).

Votre programme affiche ensuite si le nombre est pair ou s’il est impair.

Votre programme affiche ensuite « mauvais » si la note est inférieure à 8, « pas bon » si elle est inférieure à 10,

« correct » si elle est entre 10 et 12 inclus, « bon » jusqu’à 16, « TB » jusqu’à 20.

Indication1 :

= = != < > <= >= || &&

Égalité Différent Inf strict. Sup strict. Inf ou égal Sup ou égal OU ET

Indication2 : l’opération modulo « % » permet de trouver le reste d’une division entière.

1.5.4 les boucles (for et while)

Écrire dans la table de multiplication de 10x10. Vous utiliserez la boucle « for » et la boucle « while ».

\n : pour un retour à la ligne (équivalent de <br/> en html) \t : pour une tabulation

1.5.5 Exercice n°5 : les tableaux (foreach)

Dans un fichier « exercice5.php », reprendre l’exercice précédent en stockant tous les résultats de la table de

multiplication préalablement dans un tableau :

$multiplication[][]

Tester la fonction « print_r ».

Afficher le tableau en utilisant la boucle « foreach ».

1.5.6 Les tableaux associatifs

Dans un fichier « exercice6a.php », testez les exemples de la doc sur les tableaux associatifs. Tester la fonction

« print_r ».

Dans un fichier « exercice6b.php », créez un tableau associatif qui stocke la liste d’étudiants :

$etudiant[0][‘nom’]=”toto” ; $etudiant[0][‘prenom’] =”ptoto” ; $etudiant[0][‘age] =”10” ;

(Créez 4 étudiants de la même façon)

Utiliser une boucle « foreach » pour afficher les données.

Voir le chapitre 9 du cours : http://www.grappa.univ-lille3.fr/polys/php/

1.5.7 Les fonctions

Dans un fichier « exercice7.php », créez une fonction « estPair » et « estImpair » qui indique si le nombre

entier passé en paramètre est pair ou impair. Si le nombre n’est pas entier, la fonction indique

« impossible ». Tester cette fonction dans le même fichier (tous les cas possibles !).

Donnez le même nom à deux variables : une dans le programme appelant, et une dans une fonction

appelée. Vérifiez que la fonction ne modifie pas la valeur de la variable du programme appelant.

1.5.8 Les dates

Dans un fichier « exercice8.php », créez une date qui correspond au 30/8/1989. Affichez trois fois de suite la date

qui correspond à « maintenant ». Affichez que la date de « maintenant » est bien supérieure au 30/8/1989…

Page 12: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 12

1.5.9 Portée des variables (include)

Définir une variable et une fonction dans un fichier « exercice9a.inc ».

Dans un fichier « e9b.php », appelez la fonction et afficher la variable du fichier « exo9a.inc ».

Dans un fichier « e9c.php », faire de même en passant par le fichier « e9b.php ».

1.5.10 Lire/écrire un nombre dans un fichier texte

Dans un fichier « e11.php », ajoutez une ligne à un fichier texte « liste.txt » : vous y placerez un nombre entier

entre 1 et 100 définit au hasard par le système (fonction rand).

Page 13: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 13

2 PHP Séance n°2 – passer des variables

2.1 Tester apache depuis un navigateur

A faire : avec firefox (sur le client), cherchez l’adresse

http://192.168.56.101/

Attention : si ça ne fonctionne pas : il FAUT ajouter une exception pour éviter de passer par le proxy du navigateur

pour l’adresse 192.168.56.101. Par exemple, avec « firefox », [Outils][option][avancé][réseau][paramètre] et

ajouter l’adresse du serveur (192.168.56.101) dans la liste « no proxy for : »

2.2 PHP pour créer un site web

2.2.1 Créer l’utilisateur webadmin

on a créé un utilisateur spécial pour faire du web : webadmin (groupe www-data, comme apache)

C’est l’utilisateur « webadmin » qui crée les pages dans /var/www/

Et c’est l’utilisateur « apache » qui lit le contenu des pages dans /var/www/

User Group Autre (o)

Fichier (php) Lire

écrire

Lire

(rarement écrire) RIEN

Dossier Lire

Ecrire

Executer(parcourir)

Lire

Executer(parcourir)

(rarement écrire)

RIEN

2.2.1.1 Voici la méthode pour créer le « webadmin »

root@ubuntu:/var/www# adduser webadmin

Adding user `webadmin' ...

Adding new group `webadmin' (1001) ...

Adding new user `webadmin' (1001) with group `webadmin' ...

Creating home directory `/home/webadmin' ...

Copying files from `/etc/skel' ...

Page 14: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 14

Enter new UNIX password: LE MOT DE PASSE : irsii

Retype new UNIX password:

passwd: password updated successfully

Changing the user information for webadmin

Enter the new value, or press ENTER for the default

Full Name []:

Room Number []:

Work Phone []:

Home Phone []:

Other []:

Is the information correct? [Y/n]

on crée un groupe pour l’associer à l’utilisateur webadmin

le groupe “www-data” existe déjà (c’est le groupe de apache)

root@ubuntu:/var/www# usermod webadmin -g www-data

2.2.1.2 Les droits sur le dossier /var/www

root@ubuntu:/var/www# chown -Rf webadmin:www-data /var/www/

root@ubuntu:/var/www# find /var/www/ -type d -exec chmod 750 {} \;

root@ubuntu:/var/www# find /var/www/ -type f -exec chmod 640 {} \;

Le dossier TP1 : tous les droits pour “webadmin”, “apache” peut lire les fichiers presents et le traverser

Le fichier « index.html » : « webadmin » peut le lire et le modifier, « apache » peut seulement le lire.

Créer un compte sur le notepad++, pour que la connexion se fasse avec l’utilisateur “webadmin”, et le

dossier « /var/www/ ».

Rq : sur le serveur, pour se connecter, taper : $ su webadmin

2.2.2 Le programme de base « bonjour »

A faire : depuis notepad++,

1. créer un profile « webadmin » qui pointe sur « /var/www »

2. créer le dossier TP1

3. écrire le programme « /var/www/TP1/bonjour2.php » suivant (sur le serveur ubuntu) :

<html><body> <?php echo " bonjour " ; print " tout le monde "; ?> </body></html>

A faire : avec firefox (sur le client), cherchez l’adresse

http://192.168.56.101/TP1/bonjour2.php

2.2.3 Exercices sur le navigateur

Vous pouvez reprendre quelques exercices de la partie 1, pour y ajouter les balises <html><body> et

</body></html> afin de voir le résultat de vos programmes php sur le navigateur.

Ps : sous linux, avec le shell, on peut ajouter une ligne assez simplement dans vos fichiers :

A la fin avec un ‘echo’ :

Page 15: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 15

$ echo "</body></html>" >> exo1.php

En première ligne avec sed (et ‘1i’) : $ sed -i '1i<html><body>' exo1.php

2.3 PHP et le HTML (30’)

Avec l'utilisateur « webadmin », créez un dossier TP2 dans le dossier /var/www/

2.3.1 Les variables d’environnement

Dans un fichier « indentite.php », identifiez et affichez les éléments suivants :

l’adresse ip du navigateur

le dossier où se trouve le fichier « e8.php »

l’adresse du serveur et le port

Utilisez la fonction « phpinfo( ) », et lisez la liste des informations accessibles (5’).

2.3.2 Exercice n°2 : les boucles (for et while)

Écrire dans un tableau HTML la table de multiplication de 10x10. Vous utiliserez la boucle « for » et la boucle

« while ».

Rappel d’un tableau d’une ligne et de deux colonnes en html :

<table border=1> <tr> <td> valeur1 </td><td> valeur2 </td> </tr> <tr> <td> valeur3 </td><td> valeur4 </td> </tr> </table>

2.4 Exercice n°3 : passage de valeurs entre 2 pages dans un site (1h)

2.4.1 La méthode GET (15’)

Écrire le code dans le fichier « /www/TP2/exercice3a.php » (créer le dossier « tp1 »)

<form action=”appel.php” method=”get”> <input type=”text” name=”nom1” value=”valeur1”> <input type=”hidden” name=”nom2” value=”valeur2”> <input type=”submit” name=”nom3” value=”valeur3”> </form>

La valeur sera retrouvée dans la page suivante (appel.php) grâce à la variable « $_GET »

< ?php $a = $_GET[”valeur1”] ; ?>

2.4.2 La méthode POST (15’)

Transformer le code de l’exercice 3b avec la méthode « POST » (method=”post”>).

if (isset($_POST['nom'])) $nom=$_POST['nom']; else $nom="";

Pour tester l’existence d’une variable

2.4.3 Valeur passée entre Trois pages (30’)

Écrire 3 pages « exo33a.php », « exo33b.php », « exo33c.php ». Mettre sur chaque page un formulaire qui permet

de passer la valeur de A à B à C à A…

La valeur est saisie par l’utilisateur dans la page A.php.

Elle est affichée dans B.php (mais non saisie)

Elle est re-saisie dans C.php.

Page 16: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 16

2.4.4 Exercice n°4 : les formulaires HTML (1h)

A faire :

utilisez le fichier HTML (« formulaires.html ») avec tous les types de formulaires HTML, ajoutez trois

boutons de validation.

Afficher tous les résultats dans la page PHP (« traitement.php »)

Autre question : que se passe-t-il si on place 2 formulaires dans la page « formulaires.html » ?

Remarque : Si vous avez de multiples fois le même input dans un formulaire : utilisez un tableau !

Pour un formulaire avec un tableau, le nom des variables sera indiqué avec « [ ] », par exemple : (il sera ensuite

récupéré en get ou post sous forme de tableau).

<input type=”text” name=”nom[]” value=”valeur1”>

Exercice n°4 : deux pages : le jeu « plus grand-plus petit » (2h)

Configuration du serveur apache-php : afficher les messages d’erreur

Pour pouvoir modifier simplement les fichiers de configuration, le plus simple est de travailler à distance avec np++

avec le compte « root ».

irsii$ sudo su (entrer le mot de passe « irsii ») root$ passwd (changer le mot de passe de « root », avec « irsii »)

Et sous notepad++ :

Créer une nouvelle connexion, user=root, dossier distant=/etc/

Modifier le fichier « /etc/php5/apache2/php.ini » et modifier la ligne display_errors = Off

A remplacer par : display_errors = On

sauver le fichier sous notepad++ et puis, sur le serveur, relancer le serveur apache :

irsii$ sudo su (entrer le mot de passe « irsii ») root$ /etc/init.d/apache2 restart

Maintenant, les erreurs de codes (oublie d’un « ; », les erreurs « bêtes » seront affichées).

2.4.5 Jeu avec formulaire « hidden »

Créez un dossier /var/www/TP2/jeuA

Au début (dans la page accueil.php), le jeu place un nombre aléatoire qui sera passé en « hidden ». Le joueur

dispose alors de 10 essais pour trouver le nombre.

Accueil.php

[début]

Tester.php

[perdu]

(ou)

[Gagner]

Saisie.php

Essai :_10_

[valider]

Page 17: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 17

2.4.6 Utilisation de session simple php (le panier !)

Pour passer d’une page à l’autre des valeurs sans mettre de formulaires avec des variables cachées (hidden), vous

avez la possibilité d’utiliser la variable d’environnement $_SESSION.

Indication : sous free, vous avez la possibilité de tester cela en créant un dossier « session » à la racine de votre

site.

<?php // page1.php session_start(); echo 'Bienvenue à la page numéro 1'; $_SESSION['favcolor'] = 'green'; $_SESSION['animal'] = 'cat'; $_SESSION['time'] = time(); ?>

Suivie par

<?php // page2.php session_start(); echo 'Bienvenue sur la page numéro 2<br />'; echo $_SESSION['favcolor']; // green echo $_SESSION['animal']; // cat echo date('Y m d H:i:s', $_SESSION['time']); // Vous pourriez utiliser la constante SID ici, tout comme dans la page page1.php echo '<br /><a href="page1.php">page 1</a>'; ?>

Exemple de code extrait de la documentation

2.4.7 Jeu avec SESSION php

Créez un dossier /var/www/TP2/jeuB

Vous ferez le même jeu en utilisant les variables de SESSION nommées « $_SESSION[”nbInconnu”] » et

« $_SESSION[”nbCoup”] ».

Voir l’exercice précédent. A faire : (internet = plusieurs connections simultanées ??)

Tester le jeu (la même page) avec 2 onglets (en même temps) sur firefox

Tester le jeu avec firefox ET Internet Explorer

Conclure.

2.5 Récupérer vos programmes

Lancer l’outil portable « filezilla »,

Ouvrez une connexion sur votre serveur

Récupérer tous vos fichiers sur votre clé USB.

Page 18: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 18

2.6 PHP à l’heure du HTML5

2 remarques importantes

Les variables de session existent en html5 ; et ça change la conception du programme php

Les vérifications des champs de saisies doivent se faire en javascript pour plus d’interactivité avec

l’utilisateur. Il n’empêche que la vérification en php doit aussi exister avant de travailler avec la BDD.

Page 19: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 19

3 PHP Séance n°3 – PHP et Mysql (BDD mysql en PHP et Sessions)

3.1 Installer phpmyadmin SUR LE SERVEUR

Grace à Filezilla (installer la version portable), déposer le fichier « phpMyAdmin-3.4.6-all-languages.tar » sur le

serveur « /var/www/ » avec

Le compte « webadmin ». Puis sur le serveur, tapez les commandes suivantes :

Webadmin$ cd /var/www/ Webadmin$ tar zxvf phpMyAdmin-3.4.6-all-languages.tar Webadmin$ mv phpMyAdmin-3.4.6-all-languages/ phpmyadmin

Vous pouvez tester depuis firefox : http://192.168.56.101/phpmyadmin

Se connecter avec « root » et « irsii » (mot de passe de mysql défini lors de l’installation de mysql)

Vous pouvez tester (sur le serveur) la connexion :

$ mysql –uroot -p

(avec le mot de passe ‘irsii’)

mysql> use mysql mysql> select * from user ;

… le plus simple reste d’utiliser phpMyAdmin à travers le navigateur !

3.2 Exercice n°1 : lire un fichier de format « csv »

Créez un fichier csv (avec 3 colonnes séparées par le caractère point-virgule ” ;” : nom, prénom, âge avec 3 ou

4 personnes).Parcourez ce fichier texte pour alimenter un tableau associatif php. Puis triez par nom/prénom/âge

et affichez ce tableau.

3.3 Exercice n°2 : connexion-déconnexion à une BDD mysql (1 seule table)

Avec phpMyAdmin, créez la BDD « seance3 » avec la table « produit » :

NP Produit Couleur QS

Integer Varchar(20) Varchar(20) Integer

Avec la documentation, créer un fichier « fonctionSQL.php » qui contient la fonction de connexion et la fonction

déconnexion. Testez.

define( " DATABASE_SERVER ", "localhost" ); define( "DATABASE_USERNAME ", "root" ); define( "DATABASE_PASSWORD ", "qcm2" ); define( "DATABASE_NAME ", "TP3" ); define( "SITE_RACINE", "www.irsii.com/" ); define( "FICHIER_RACINE", "/var/www/irsii/" );

Page 20: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 20

//connexion $link = mysqli_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME) or die(echo "Error " . mysqli_error($link)); echo 'Connecté correctement'; mysqli_close ($link );

3.4 SELECT-DELETE-UPDATE-INSERT

Exemple de doc :

http://www.php.net/manual/fr/mysqli-result.fetch-assoc.php

http://php.net/manual/fr/mysqli-result.fetch-array.php

3.4.1 Exercice n°1 : select dans un tableau – 1 page

Avec la documentation, créer dans le fichier « fonctionSQL.php » la fonction qui retourne un tableau contenant

la liste des noms de la table « produit ». Tester. Afficher la table « produit » dans un tableau html grâce à la page

« select.php ».

// la syntaxe suivante est vivement recommandée ! $requete = <<< STR SELECT np, libelle, qs FROM Produit WHERE qs > %d AND couleur=”%s”; STR; // changez la requête ! $Query = sprintf($requete , 15, ”rouge”); // %d est remplacé par la valeur 15 ! if ($result = mysqli_query($link, $Query)) { /* Récupère un tableau associatif */ while ($row = mysqli_fetch_assoc($result)) { printf ("%s (%s)\n", $row["np"], $row["libelle"]); }

printf("Le Select retourne %d lignes.\n", mysqli_num_rows($result)); /* Libération des résultats */ mysqli_free_result($result); } $requete = <<< STR SELECT id, name FROM mytable STR; if ($result = mysqli_query($link, $ requete)) { /* Récupère un tableau associatif */ while ($row = mysqli_fetch_row($result)) { printf ("%s (%s)\n", $row[0], $row[1]); } /* Libère le jeu de résultats */ mysqli_free_result($result);

Page 21: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 21

}

Exemple de code

3.4.2 Exercice n°2 : gestion des erreurs SQL

Avec la documentation, modifiez le fichier « fonctionSQL.php » pour afficher un message d’erreur en cas de

dysfonctionnement. Tester (par exemple, en coupant le serveur mysqld).

echo mysqli_errno($link) . ": " . mysqli_error($link) . "\n";

Exemple de code extrait de la documentation

Rq : vous aurez des centaines d’appels différents à la base dans votre programme. En cas d’erreur, il faut donner

un message à l’utilisateur qui vous permet de savoir (facilement et exactement) où a eu lieu l’erreur ! Chaque

appel doit être différencié avec un code, par exemple « ERR-02-B » avec 01, 02, 03… un numéro de fichier, et

A, B, C… le numéro de la requête dans la page (si vous avez 5 requêtes dans la page 01, les erreurs seront codées

de ERR-01-A à ERR-01-E)

3.4.3 Exercice n°3 : Insert – 2 pages

Avec la documentation, créer dans le fichier « fonctionSQL.php » la fonction qui permet d’insérer un nouveau

tuple dans la table « produit ». Tester.

La saisie se fera dans le fichier « insert.php ».

$sql = <<< STR INSERT INTO infos_tbl(id, nom, prenom,email, icq, titre, url) VALUES('','$s','$s','$s','$s','$s','$s') STR; $Query = sprintf($requete, $nom', $prenom, $email, $icq, $titre, $url); if (mysqli_query($link, $Query) === TRUE) { printf("ligne insérée avec succès.\n"); } echo 'Vos infos ont été ajoutées.';

Exemple de code pour insérer en php sous mysql

3.4.4 Exercice n°4 : Delete – 1 page

Créer la page « delete.php » inspirée de la page « select.php », qui contiendra une colonne de plus avec un bouton

permettant de supprimer la ligne du bouton cliqué.

3.4.5 Exercice n°5 : Update – 2 pages

Créer la page « update.php » inspirée de la page « select.php », qui contiendra une colonne de plus avec un bouton

permettant de modifier les informations de la ligne du bouton cliqué, puis de valider ou d’annuler les changements.

3.4.6 Exercice n°6 : Tout mettre sur une seule page

Regrouper toutes les fonctions sur une seule page « prg.php ».

3.5 Configuration Apache

3.5.1 Configuration coté serveur

Page 22: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 22

Expliquer rapidement : vous travaillez en local, il faut que votre navigateur, en allant chercher « tp3.irsii.fr » aille

sur 192.168.56.101.

Faire en sorte de connecter votre site « /var/www/tp3/prg.php » qui se connecte avec

http://192.168.56.101/tp3/prg.php puisse se connecter avec http://tp3.irsii.fr/prg.php

Pour cela, n’oubliez pas de

changer la configuration d’apache

################################################################

vi /etc/apache2/sites-available/irsii.fr.conf

<VirtualHost 192.168.56.101:80> DocumentRoot "/var/www/irsii/" ServerName irsii.fr ServerAlias www.irsii.fr <Directory /> allow from all Options +Indexes </Directory> </VirtualHost>

Vous devez dire à apache de rendre « enabled » le site « available » avec la commande suivante :

root$ sudo a2ensite irsii.fr.conf

Vous pouvez vérifier que le fichier est dans le dossier « sites-enabled ».

Modifier également sur le serveur le fichier “/etc/hosts” 192.168.56.101 irsii.fr

(Sur le serveur, vous pouvez vérifier la connexion avec un « ping irsii.fr ».

3.5.2 Vérification coté serveur

Interrogation du serveur SANS NAVIGATEUR !! telnet irsii.fr 80

ou bien telnet 127.0.0.1 80

Le port 80 est celui généralement utilisé par le serveur pour recevoir une connexion.

Et : GET / http/1.0

Puis appuyez 2 fois sur « entrée », et si tout se passe bien on aura la réponse d’apache…

3.5.3 Vérification coté Client

COTE CLIENT (Navigateur web) : par exemple sou IE

Page 23: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 23

Modifier le proxy par défaut pour indiquer l’adresse du serveur 192.168.56.101 et affichez l’adresse « irsii.fr »

ou « www.irsii.fr ».

3.6 Exercice n°6 : les Magic Quotes

Pour éviter les « SQL-Injection ».

Voir : http://www.phpfrance.com/tutoriaux/index.php/2005/04/17/29-les-magic-quotes

Page 24: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 24

4 PHP Séance n°4 – Structurer un Projet – 4h

4.1 Exercice n°1 : structure d’une application (pour déploiement/maintenance facilité)

L’idée consiste à ne pas avoir de fichier à la racine du projet. Seulement les fichiers « index.php » qui

affichera la page désirée.

Pour « installer » le site, il suffit de :

o Copier en une fois tout le dossier principal

o Modifier un seul (et unique) fichier de configuration

o Si besoin, lancer un script SQL pour gérer la BDD.

Structure de l’application : (non exhaustif)

/projet/etc/ ‘ le(s) fichier(s) de configuration /projet/module/ ‘ les pages « php » /projet/css/ /projet/js/ allez voir et TESTEZ : http://jqueryui.com/ /projet/tmp/ /projet/images/ /projet/lib/ ‘ les librairies spécifiques utilisées

4.2 Exercice n°2 : entrer par une seule porte

Structure : passer toujours par la page « index.php ».

Créer un projet qui permet de naviguer entre 3 pages « a.php » et « b.php » et « c.php », grâce à des liens href et

à des formulaires (au choix).

4.3 Exercice n°2 : configurer Apache

4.3.1 Mode réécriture de l’url

Connectez-vous en root sur le serveur.

root@ubuntu:~# a2enmod rewrite

Enabling module rewrite.

Run '/etc/init.d/apache2 restart' to activate new configuration! root@ ubuntu:~# /etc/init.d/apache2 restart

* Restarting web server apache2 ... waiting [ OK ]

root@ ubuntu:~#

4.3.2 fichier .htaccess

Mettre à la base de votre site web le fichier « .htaccess » : (ne pas oublier le point devant !)

<IfModule mod_rewrite.c>

index.php?num=2

$num=$_GET[”num”] ;

if ($num==1) $p=”a” ;

else if ($num==2) $p=”b” ;

else if ($num==3) $p=”c” ;

else exit;

$page= ”module/”.$p.”.php”;

include ($page);

Index.php

a.php

b.php

c.php

Page 25: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 25

Options +FollowSymLinks Options +Indexes RewriteEngine on RewriteBase / RewriteRule ^page-([0-9]+)*$ index.php?num=$1 [L,QSA] </IfModule>

4.4 Exercice n°8 : protéger des pages - session

Pour entrer sur un site de 3 pages (a, b, c), vous devez d’abord entrer un mot de passe. Vous pouvez naviguer

autant que vous le désirez, mais sans naviguer pendant 2 minutes, vous serez déconnecté.

Indication : le mot de passe sera « abc ». Dans la session, sera indiquée la date exacte de la dernière connexion…

Si cette date n’existe pas : le mot de passe est demandé. Si cette date est trop ancienne (2’ d’écoulées) : le mot de

passe est demandé.

Dès qu’une page est ouverte :

Si on n’est pas encore connecté : demande du mdp

Si on était connecté

o On vérifie que le temps passé entre la dernière page ouverte et maintenant n’excède pas 2 minutes.

o On ouvre la page et on réinitialise le temps d’ouverture de la dernière page à « maintenant »…

Page 26: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 26

5 PHP Séance n°5 - PROJET – 4h Créez le dossier /var/www/trombi

5.1 Projet à réaliser. Trombinoscope

1) l’administrateur

il dépose des images dans un répertoire « photo/vrac/ » (au moyen d’un fichier .zip), ou un tableau d’images.

les groupes disponibles seront définis par l’administrateur directement dans un fichier de configuration.

2) l’étudiant

lors de son premier passage, il doit donner

son mail

son groupe

et cliquer sur sa photo

la photo est identifiée, et déplacée dans un répertoire « photo/numéro du groupe/ »

lors des passages suivants :

il peut visualiser le trombinoscope (choix par groupe, par nom, par prénom)

5.1.1 Faire un dessin précis du site (avec des flèches pour indiquer le passage d’information, le nom et le numéro associé de chaque page)

5.1.2 Définir la table SQL et la créer dans une BDD « trombinoscope ».

5.1.3 Définir et écrire les pages php.

Page 27: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 27

Si vous avez du temps, la page administrateur doit permettre de modifier un étudiant :

Le supprimer

Remettre sa photo dans vrac

Changer ses informations

Le changer de groupe

Page 28: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 28

6 PHP Séance n°6 – devoir = 2h (version 2008)

6.1 Devoir papier : écrire 3 algorithmes

EXO1 : Écrire deux pages en php. La première permet à l’utilisateur de saisir 2 nombres.

La deuxième page affiche les 2 nombres (le plus grand sera en gras <b>).

EXO2 : Expliquez le principe du client-serveur pour PHP par un dessin & moins de 10 lignes.

EXO3 : Écrire le jeu du pendu.

6.2 Devoir machine : écrire 2 algorithmes

EXO1 : Définir le programme « exo1.php » qui affiche dans un formulaire à choix multiple le nom des fichiers

du dossier courant. Ajouter un bouton pour « supprimer » le fichier et un bouton pour « afficher » le fichier.

EXO2 : Écrire le jeu du pendu « pendu.php ». Le mot sera stocké dans une variable de session.

OU

EXO2 : Écrire un programme « exo2.php » qui permet de saisir dans un menu déroulant (de 1 à 8) le nombre de

champs texte à saisir. Les saisir, valider et les sauvegarder dans une table.

(BDD= « devoir1 », table = « exo2 », champ= « nom » (varchar(20)).

Page 29: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 29

7 PHP Séance n°7 – lilbrairie FPdf = 2h

7.1 Exercice n°1 : Utilisation de la classe fpdf

7.2 Installez et testez la classe fpdf et ses exemples

Faire le tutoriel donné avec fpdf.

7.2.1 Utilisation de la classe fpdf

Faire une page php qui demande :

Le nom du serveur MySql

Le nom de la base de données

Le nom d’utilisateur et son mot de passe

Le nom d’une table

La validation entraîne la création d’un fichier pdf qui contient les données de la table dans un tableau.

7.2.2 Exercice n°2 : Utilisation de la classe fpdf

Ecrire la page php qui génère le trombinoscope au format PDF.

En haut : le nom du groupe.

Dans un tableau, les étudiants avec leur nom, prénom.

Il sera possible de choisir le nombre de photos sur la page (en nombre de colonnes)

Page 30: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 30

8 PHP Séance n°8 – Ajax, Jquery et PHP – 4h AJAX avec JQuery.

Ajax permet d’échanger des données entre la page html (via le javascript) et un fichier sur le serveur (php) sans

recharger la page html !

8.1 Ajax avec JQuery

8.1.1 Exemple à tester

Créer un fichier « page.html » avec le script javascript suivant :

Vous importerez bien sur le fichier de jquery : http://jquery.com/download/

<html><body> <script type="text/javascript"> function go(){ $.ajax({ type: "POST", url: "question.php", data: "valeur=5", success: function(data){ alert( "Data Saved: " + data ); $('#mabalise').html(data); // javascript remplace le code html de « #mabalise » } }); } </script> bonjour<br/> les doublons : <div id="mabalise"></div><br/> <input type=submit name=action value='recalculer les notes' onclick='go( );' > </body></html>

Et sur le serveur, la page « question.php » : qui écrit (avec echo) le texte qui sera retourné de manière transparente

à la variable « $data » de la page, et le javascript continue son exécution en success...

<?php session_start(); if (!isset($_SESSION["nbQ"])) $_SESSION["nbQ"]=1 ; $v=$_POST["valeur"] ; $nbQ=$_SESSION["nbQ"]; $_SESSION["nbQ"]=$nbQ+$v; $data="valeur :".$nbQ; header("content-type: text/plain"); header("Pragma: no-cache"); header("Expires: 0"); echo ($data); ?>

Tester et comprendre le mécanisme…

8.1.2 Exemple à tester pour retourner un tableau à 2 colonnes :

La page php peut écrire (et donc retourner) un tableau.

Sur le serveur, la page « question2.php » : qui écrit (avec echo) le texte qui sera retourné de manière transparente

à la variable javascript « data » de la page, et le javascript continue son exécution en success...

<?php $data = " { \"aaData\": [\n"; //[[1, 2], [11, 22], [111, 222]] }";

Page 31: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 31

header("Content-type: application/txt"); header("Pragma: no-cache"); header("Expires: 0"); echo ($data); ?>

Affichez le tableau à 2 dimensions dans le javascript.

8.1.3 Votre premier programme ajax avec php

On veut faire deux menus déroulants :

Choix1 Choix2

arbre Sapin

arbre Chêne

arbre Olivier

animal Chien

animal Chat

Dans le premier menu déroulant, choisir « arbre » ou « animal », et le 2ème menu apparaît avec uniquement les

choix2 possibles (la page « question3.php » retourne le code html via ajax).

8.1.4 Conseil : comment trouver les erreurs dans un page ajax ?

1. Vous pouvez facilement faire une sortie texte dans le programme ajax :

/****************************************** $Fnm = "/tmp/mon_fichier.txt"; $inF = fopen($Fnm,"a"); $ptr = ftell($inF); fwrite($inF,"***\n action= $Query \n ***"); fclose($inF); ******************************************/

...reste à aller voir le fichier « /tmp/mon_fichier.txt »

2. autre solution (complémentaire) : utiliser firebug et regarder le retour de prg php.

8.1.5 Exercice avec deux pages : le jeu « plus grand-plus petit » avec Ajax

- Au début, le jeu place un nombre aléatoire dans une variable de session en php (cf « début du jeu » avec ajax).

Ensuite, le joueur dispose de 10 essais pour trouver le nombre. Toujours sur la même page...avec ajax. Qui

retourne si le nombre est ok ou pas...

- la page php peut retourner :

« perdu », « trop grand», « trop petit » ou « gagné »

la page « html » définit les fonctions

function debut( )

et

function essai(nb){

data: "valeur="+nb

et dans le javascript, vous traitez le resultat :

success: function(data){

alert( "Data Saved: " + data );

if (data=...)...

}

8.2 Visualiser des tables avec DataTables

Page 32: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 32

C’est LA méthode pour afficher un tableau ! http://datatables.net/

Affichez une table de votre BDD.

Voici le code php (à adapter) : « tableau.php »

$requete = <<< STR SELECT * FROM WHERE ; STR; $Query = sprintf($requete , $_SESSION["id"] ); $result = mysqli_query($Query); if (!$result) { echo "ERR02B - Impossible d'exécuter la requête ($requete) dans la base : " . mysql_error(); exit; } $data = "{ \"aaData\": [\n"; //exemple = [[1, 2], [11, 22], [111, 222]] }"; $i=0; while ( $aRow = mysql_fetch_array( $result ) ) { if ($i!=0) $ligne=",\n"; else $ligne=""; $i++; $ligne=$ligne."[\"".addslashes($aRow['numero'])."\",\"".addslashes($aRow['nom'])."\",\" "."<input TYPE='submit' value='voir' onclick='voir(".$aRow['id'].");' >"." \",\" "."<input TYPE='submit' value='suppr' onclick='sup(".$aRow['id'].");' >"." \" ]"; $data=$data.$ligne; } $data=$data."\n] }"; header("content-type: text/plain"); header("Pragma: no-cache"); header("Expires: 0"); echo ($data);

et du côté du html (dans un fichier « tableau.html ») , voici un exemple de dataTables :

$(document).ready(function() { $('#example').dataTable( { // "bProcessing": true, "bServerSide": false, "aaSorting" : [[2, 'asc']], "sAjaxSource": "page.php", "oLanguage": { "sProcessing": "Traitement en cours...", "sLengthMenu": "Afficher _MENU_ éléments", "sZeroRecords": "Aucun élément à afficher", "sInfo": "Affichage de l'élement _START_ à _END_ sur _TOTAL_ éléments", "sInfoEmpty": "Affichage de l'élement 0 à 0 sur 0 éléments", "sInfoFiltered": "(filtré de _MAX_ éléments au total)", "sInfoPostFix": "", "sSearch": "Rechercher:", "sUrl": "", "oPaginate": { "sFirst": "Premier", "sPrevious": "Précédent", "sNext": "Suivant",

Page 33: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 33

"sLast": "Dernier" } } } );

et le code html pour afficher le tableau (aussi dans le fichier « tableau.html ») :

<table cellpadding="0" cellspacing="0" border="1" class="display" id="example" width="95%" > <thead> <tr> <th>numéro</th> <th>nom</th> <th>Visualiser</th> <th>Supprimer</th> </tr> </thead> <tbody> </tbody> </table>

… il faudra importer les bons fichiers...

8.3 afficher des pop-up dynamiques

Voir ce site (c’est obligatoire !) http://jqueryui.com/dialog/#modal-form

Choisissez un exemple, implémentez-le...

dans le html :

<div id="dialogAjouter" title="Ajouter un Etudiant" style="display:none;"> <button id="ajouter1">Ajouter un nouvel étudiant</button>

et la fonction javascript

$(function() { $( "#ajouter1" ) .click(function() { $("#dialogAjouter").dialog({ modal: true, buttons: { "Ajouter": function() { num=document.getElementsByName("anumero")[0].value; nom=document.getElementsByName("anom")[0].value; prenom=document.getElementsByName("aprenom")[0].value; $.ajax({ type:'GET', url:'ajouter_etudiant.php', data:'a=a&num=' + num + '&nom=' + nom + '&prenom='+ prenom, success: function(data){ alert(data); $("#dialogAjouter").dialog( "close" ); }, error: function(){ alert('failure'); } }); }, Cancel: function() {

Page 34: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 34

$( this ).dialog( "close" ); } }, }); }); });

8.4 Exercice n°4 : reprendre l’application « trombinoscope ».

Utilisez les technologies

- Popup pour changer le nom/groupe des étudiants (dans un menu administrateur)

- Ajax pour rendre plus conviviale le site de trombinoscope (Faites preuve d’imagination).

Page 35: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 35

9 PHP Séance n°9 – Transaction & ADODB

9.1 la banque – les transactions

Créer une BDD « banque », une table innoDB « compte » avec 5 clients…

Faire trois pages php :

DAB

Guichet (cheque et liquide)

Achat carte bleue

Le but : faire fonctionner les trois pages en même temps, pour empêcher les conflits d’écritures simultanées sur

la table « compte ».

9.2 Analyser le corrigé du TP6

Pour sécuriser un site, vous pouvez « cacher » les pages appelées.

Tester le code suivant : « tp6-num.zip » (avec et sans numéro)

Tester le code suivant « tp7-num-session.zip » (avec numéro & temps de connexion limité).

9.3 Analyser le corrigé du TP3 : l’adapter à ADODB

Installer & Tester « tp7-adodb-tp3-bis.zip »

ADOBD (Active Data Objects Data Base) permet d'effectuer simplement des requêtes en SQL sous MySQL,

PostgreSQL, Interbase, Informix, Oracle, MS SQL 7, Foxpro, Access, ADO, SAP DB, SQLite, Sybase, DB2 pour

des applications Web faite en PHP.

sitographie :

http://fr.wikipedia.org/wiki/ADOdb

http://phplens.com/lens/adodb/docs-adodb.htm

9.4 Reprendre le corrigé du trombinoscope : l’adapter à ADODB

- à la fin, installer le trombinoscope avec un autre SGBDR… (l’installation doit prendre moins de 5 minutes)

9.5 Projet – gestion de bateaux

On veut gérer un port de plaisance qui loue des places pour amarrer les bateaux.

Il y a environ 150 emplacements. Chacun pouvant accepter un type de bateau :

Type A : moins de 5 mètres

Type B : moins de 10 mètres

Type C : moins de 17 mètres

Les propriétaires des bateaux font des réservation à partir d’une date pour un nombre de jours données (par

exemple, à partir du 10/6/2006 pour 3 jours : l’emplacement sera réservé le 10/6, 11/6 et 12/6, l’emplacement

pourra être loué à un autre client à partir du 13/6…).

Les réservations se font exclusivement avec le type de bateaux.

Chaque bateau est identifié par une immatriculation de 3 caractères suivis de 2 chiffres.

Il sera possible dans le futur, d’obtenir l’agrément pour les plus gros bateaux de type D.

Page 36: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 36

Page 37: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 37

10 PHP Séance n°10 – SMARTY http://fr.wikipedia.org/wiki/Smarty

Le Modèle MVC « a.php » et « a.tpl »

1 include(_SMARTY); 2 $smarty = new Smarty; 3 $smarty->template_dir = './module'; $smarty->compile_dir = './temp/'; $smarty->config_dir = './temp/'; $smarty->cache_dir = './temp/'; 4 // le CODE PHP CALCULE les VALEURS 5 $smarty->assign('tab',$tableau); 6 $smarty->display("$page.tpl");

<HTML><BODY> CONSULTER {html_options options=$tab } </BODY></HTML>

10.1 Exercice n°0 : Tester SMARTY

Télécharger le projet « tp-smarty.zip »

Copier le dossier « tp-smarty » dans « www »

Créer la BDD « trombi »

Utiliser le script SQL « tp-smarty\Base-de-donnees.sql » pour la BDD « trombi »

Modifier la configuration dans « tp-smarty\etc\variable.inc »

Tester

10.2 Exercice n°1 : Tester les exemples SMARTY

Dans le projet « tp-smarty.zip », créer deux fichiers :

« tp-smarty\module\c.php » et « tp-smarty\module\c.tpl »

Et ajouter dans « tp-smarty\etc\config.inc » l’association « num=3 page=c »

Lire la documentation en Français sur le site de SMARTY

Dans chaque exemple, vous avez 2 parties : le code php ET le code Smarty. Faire du copier-coller des exemples

dans, respectivement, « c.php » et « c.tpl »

Regardez le résultat dans « http://localhost/tp-smarty/index.php?num=3 »

… et recommencez avec divers exemples…

10.3 Exercice n°2 : reprendre trombinoscope avec SMARTY

à la fin, installer le trombinoscope avec une autre BDD… (en moins de 5 minutes)

10.4 Exercice n°3 : projet – gestion de bateaux avec SMARTY

Reprendre l’exercice de la séance n°7 en utilisant SMARTY.

Page 38: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 38

11 PHP Séance n°11 - CMS – 2h

11.1 Exercice n°1 : les CMS

Un système de gestion de contenu ou SGC ((en) Content Management Systems ou CMS) est une famille de

logiciels destinés à la conception et à la mise à jour dynamique de site web ou d'application multimédia. Ils

partagent les fonctionnalités suivantes :

Ils permettent à plusieurs individus de travailler sur un même document ;

Ils fournissent une chaîne de publication (workflow) offrant par exemple la possibilité de mettre en ligne le

contenu des documents ;

Ils permettent de séparer les opérations de gestion de la forme et du contenu ;

Ils permettent de structurer le contenu (utilisation de FAQ, de documents, de blogs, de forums de discussion,

etc.) ;

http://fr.wikipedia.org/wiki/Syst%C3%A8me_de_gestion_de_contenu

Voici des exemples réels de sites SPIP :

http://www.urbasolar.com/

http://www.theatre2lacte.com/

http://fabulousnet.free.fr/

http://www.chantier-capvert.fr/

http://www.apard.com/

11.2 Exercice n°2 : faire un site avec SPIP

11.2.1 Création du site

Installer SPIP en local dans un dossier (voir le fichier PDF joint).

http://www.spip.net/rubrique151.html

Notez sur un papier les mots de passe et les comptes utilisateurs que vous définissez.

11.2.2 Structuration et données du site :

Faire un site qui reprend ce cours « Introduction PHP »

Vous créerez une rubrique par séance : 10 en tout.

Chaque rubrique possèdera une sous rubrique par exercice.

Chaque sous-rubrique possèdera au moins un article (l’énoncé) et des fichiers ou des liens s’ils sont disponibles…

N’oubliez pas de publier les articles

11.2.3 La mise en forme du site (squelette)

Utilisez un squelette tout fait pour rendre votre site agréable.

11.3 Exercice n°3 : insérer une page php dans Spip

Il vous sera utile d’inclure des pages php dans votre article spip.

http://www.eklesia.net/spip.php?article47

11.4 Exercice n°4 : vous pouvez essayer de faire le même travail avec Joomla

Il vous sera utile d’inclure des pages php dans votre article spip.

Page 39: Support proposé par C. Dabancourt, inspiré aussi par des …dabancourt.free.fr › IRSIIphp › PHP-seance-1_a_8-v2.8.pdf · 2013-12-03 · Sous linux, on parle de LAMP (Linux-Apache-Mysql-Php),

Support de TP PHP IRSII 2013-2014

Support de cours PHP Page 39

12 PHP Séance n°12 – utilisation d’outils PHP Regardez les applications ci-dessous et installez-testez celles que vous voulez.

12.1 PHPCheckStyle

Configurer et utiliser cet outil pour rendre plus standard votre code php.

12.2 Insérer googleMap en PHP

Un exercice simple et sympathique :

http://fardeen.biz/index.php/tutoriel-application-google-map-avec-php/

12.3 AjaxTerm : un xterm via le web

http://nawer.freecontrib.org/index.php?2006/05/24/203-ajaxterm-un-terminal-a-distance-dans-un-simple-

navigateur

12.4 GLPI

Gestion Libre du parc informatique

Voir fichier zip