Quelques rappels sur l'html / css (pdf)

 

 

Cours 1 : Introduction à PHP (pdf)

  1. Introduction
  2. Notions de base en PHP
  3. Les tableaux
  4. Superglobales et variables de session

Cours 2 : Strings, Fonctions, POO (pdf)

  1. Chaînes de caractères
  2. Fonctions
  3. Gestion des fichiers
  4. PHP objet

Cours 3 : Strings, Fonctions, POO (pdf)

  1. Architecture MVC
  2. PHP/MySQL
  3. Connexion utilisateur

Cours 4 : Gestion des accès, failles de sécurité (pdf)

  1. Organisation d'un site en modules / composants
  2. Accès privilégiés
  3. Sécuriser l'accès aux fichiers inclus
  4. Failles principales - Solutions

1. Introduction

Dans ce TP, nous allons mettre en place un schema MVC en php. Nous l'appliquerons au cas d'un site web qui référence des noms de footballeurs français. Dans un premier temps, nous simulerons l'utilisation d'une base de données avec des données statiques. Avant de commencer ce TP, il faut savoir que le MVC web côté serveur n'est articulé de la même manière que le MVC "desktop". La communication et la hiérarchie des composants n'est pas la même, pour la simple raison que le serveur doit attendre une demande du client pour effectuer une action. Le modèle ne peut donc pas directement gouverner la vue, sauf dans le cas de l'AJAX ou de langages type node.js que nous ne traiterons pas dans ce cours.

1. Introduction

Dans ce TP, nous allons ajouter au TP précédent un étage dans l'architecture. Dans le TP précédent, nous avions un site simple dans lequel plusieurs actions pouvaient être réalisées (affichage en liste, affichage des détails) pour un module de gestion de joueurs de foot. Nous allons ajouter à ce site web un module de gestion des équipes de foot. Cela suppose de modifier l'architecture vue précédemment, en y ajoutant un étage : celui des modules. Au lieu d'appeler directement le contrôleur en fonction de l'action demandée par l'utilisateur, l'index devra maintenant appeler un module en fonction de ce qui est demandé par l'utilisateur. Puis ce module, en fonction de l'action demandée par l'utilisateur, fera appel au contrôleur et à ses méthodes.

2. Création des répertoires du site

Créez un répertoire modules. Dans ce répertoire, nous créerons un dossier par module. A l'intérieur de ce répertoire, créez un dossier mod_joueurs.

3. Création du module Joueurs

A l'intérieur du répertoire mod_joueurs, créez un fichier php nommé mod_joueurs.php . Ce fichier devra contenir une unique classe, nommée ModJoueurs. Cette classe sera l'équivalent de l'index vu dans le TP précédent. Elle devra récupérer l'action demandée par l'utilisateur, et appeler la bonne fonction du contrôleur du module joueurs.

Créez maintenant des php nommés cont_joueurs.php, vue_joueurs.php, modele_joueurs.php. Ces fichiers doivent contenir respectivement les classes ContJoueurs, VueJoueurs et ModeleJoueurs. Placez-y les méthodes réalisées dans le TP précédent. Faites en sorte que le fichier ModJoueurs puisse appeler ContJoueurs, et que ContJoueurs puisse appeler VueJoueurs et ModeleJoueurs.

Dans le constructeur de ModJoueurs, placez le switch/case réalisé en TP1, dans l'index, qui permet de choisir la méthode à exécuter en fonction de l'action demandée, et modifiez-le de manière à ce qu'il soit compatible avec notre nouvelle architecture.

3. Modification de l'index

L'index appelait jusqu'ici une méthode en fonction de l'action demandée. Désormais, il devra faire appel au bon module en fonction du module demandé par l'utilisateur. Lisez le chapitre de cours dédié à la sécurité, particulièrement la partie dédiée à l'inclusion de fichiers.

Dans l'index, en fonction d'un paramètre "module" passé par la méthode GET du protocole http, appelez le module idoine. Nous avons bien ajouté l'étage de modules à notre architecture !

4. Ajout du module Equipes

Sur le même modèle que celui de Joueurs, ajoutez un module Equipes. Une équipe sera définie comme suit dans la base de données : id, nom, annee_creation, description (TEXT), pays (UNSIGNED BIGINT), logo (VARCHAR(200))

Sur le modèle du module Joueurs, codez le module Equipes. Celui-ci devra donc afficher une liste des équipes existantes et les détails d'une équipe particulière.

5. Ajout de données à la base

Visualiser des données, c'est bien, les ajouter, c'est encore mieux. Ici, nous allons apprendre à ajouter des données dans la base depuis des formulaires. Attention, parfois certains formulaires devraient être non pas accessibles à tout le monde, mais seulement à un administrateur. Pour le moment, nous n'avons pas encore vu comment gérer les droits, l'ajout sera donc accessible à tout le monde.

Créez une méthode form_ajout dans la vue du module joueurs. Ce formulaire devra passer ses données par la méthode post, à la page index.php?module=joueurs&action=ajout Ainsi, index.php pourra appeler le module joueur, qui appellera la fonction d'ajout du contrôleur, qui récupérera les données passées par la méthode post et appellera le modèle pour ajouter les données.

Vous devez donc créer dans le contrôleur : une fonction form_ajout qui appellera la vue pour afficher le formulaire, une fonction ajout qui appellera le modèle pour ajouter les données et afficher un message de confirmation de la vue.

En PHP, on peut récupérer les données issues d'un formulaire, qui sont placées dans les variables $_GET ou $_POST. La clé qui permet d'accéder aux données correspond au nom donné au champ du formulaire html. Par exemple, le champ suivant :

 

sera récupéré dans la page cible par $_GET["truc"]. 

Mettez en oeuvre ce que l'on vient de voir pour créer le formulaire ainsi que les traitements nécessaires à l'ajout de joueurs.

1. Introduction

Dans ce TP, nous allons ajouter au TP précédent la connexion utilisateur ainsi que le corps html du site web.

 

Introduction

Dans ce TP, nous allons voir comment passer des valeurs d'une page à une autre en php.


 

1. Page de menu

Ecrire une page php menu.php et y écrire trois liens vers une page message.php. Ces trois liens devront comporter un paramètre 'id' avec comme valeur 1, 2 et 3. Ce paramètre id servira à la page message.php pour savoir quel message elle doit afficher.

2. Page messages

Ecrire une page messages.php dans laquelle vous placerez un tableau qui aura comme clés 1, 2, et 3 et les valeurs de votre choix.

Récupérez-y le paramètre id et affichez le message correspondant à l'id dans le tableau $messages. Testez le lien entre les deux pages.

3. Page formulaire 

Ecrire une page formulaire.php dans laquelle vous placerez un formulaire composé uniquement d'une liste déroulante avec comme nom id et comme valeurs 1, 2, et 3. Le formulaire devra envoyer ses données à la page messages.php par la méthode GET. Testez le lien entre le formulaire et la page messages.php

Introduction

Ajax : Asynchronous Javascript And XML est une architecture qui permet l'élaboration d'applications ou de morceaux de sites web en permettant une interaction directe entre le client et le serveur web. Elle permet donc de réaliser une page dynamique et donc des changements sur cette page sans la recharger, au contraire des architectures web classiques que nous avons vues dans ce cours. Voici les explications sur l'acronyme :

  • Asynchrone : le programme en javascript effectue une requête, et l'attente du résultat est non bloquante : le javascript continue de s'exécuter normalement en attendant le résultat de la requête ;
  • Javascript : c'est le langage utilisé côté client pour effectuer des requêtes, et manipuler l'arbre DOM en fonction du résultat des requêtes afin de changer les données de la page web ;
  • XML : c'est le langage structuré utilisé aux débuts d'Ajax afin de communiquer les données entre le serveur et le client. Désormais, beaucoup d'applications utilisent le Json.

Nous allons ici réaliser une page en Ajax.