Browse Source

Ajout des fichiers nécessaires pour le 1er TP

akrah 6 years ago
commit
e7d4070e4d
5 changed files with 238 additions and 0 deletions
  1. 67 0
      GITLABSSH.md
  2. 41 0
      HOWTO.md
  3. 54 0
      README.md
  4. 76 0
      TP1.md
  5. BIN
      images/sshGiltab.gif

+ 67 - 0
GITLABSSH.md

@@ -0,0 +1,67 @@
+SSH et Giltab
+=============
+
+Cette procédure permet d'utiliser l'authentification par clé SSH plutôt que de taper ses login et mots de passe à chaque requête (push, pull, etc.) vers Gitlab. Elle comporte deux étapes détaillées ci-dessous :
+
+1. Créer une clé SSH pour votre compte utilisateur
+2. Copier la clé publique dans Gitlab
+
+Si vous utilisez Gitlab à partir de plusieurs comptes (ordi de l'IUT, ordi perso, etc.), la procédure suivante est à répéter pour chaque compte.
+
+1 - Créer une clé SSH
+---------------------
+
+1. Dans un terminal, tapez la commande suivante :
+```
+login@ordi:~$ ssh-keygen -b 4096 -C [nom de la clé]
+```
+Pour chaque question, laissez vide et validez :
+```
+Generating public/private rsa key pair.
+Enter file in which to save the key (/.../login/.ssh/id_rsa):
+Enter passphrase (empty for no passphrase):
+Enter same passphrase again:
+Your identification has been saved in /.../login/.ssh/id_rsa.
+Your public key has been saved in /.../login/.ssh/id_rsa.pub.
+The key fingerprint is:
+SHA256:f3FTQpO9zwSY4DS2rIc1qT687x9C8CsuTD8MB61ogyU [nom de la clé]
+The key's randomart image is:
++---[RSA 4096]----+
+|          =. ooo |
+|   B     = +o.o..|
+|       .. B   ..o|
+|  E . . .B .   +.|
+|   + . oS + . oo.|
+|  . + +o.+ . o .o|
+|   . + == + o    |
+|      o.++ o .   |
+|       .o+o..    |
++----[SHA256]-----+
+```
+
+2. Deux fichiers (au moins) sont alors créés dans votre répertoire `/.../login/.ssh/` :
+```
+login@ordi:~$ ls ~/.ssh
+... id_rsa  id_rsa.pub ...
+```
+
+- `id_rsa` contient votre clé privé : ne jamais la communiquer !
+- `id_rsa.pub` contient votre clé publique : vous pouvez la communiquer au monde entier.
+
+2 - Copier la clé publique dans Gitlab
+--------------------------------------
+
+![](images/sshGitlab.gif)
+
+1. Connectez-vous sur Gitlab avec vos identifiants Unistra : https://git.unistra.fr
+2. Cliquez sur l'icône en haut à droite de l'écran
+3. Cliquez sur le menu "Settings" ("Paramètres")
+4. Dans le menu à gauche de l'écran, cliquez sur le menu "SSH Keys" ("Clés SSH")
+5. Dans un terminal, affichez votre clé avec la commande suivante :
+```
+login@ordi:~$ cat ~/.ssh/id_rsa.pub
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3GZATo37T8jZVwV14k3luTLmXZUaKeUVFxqBBOow+0i1FcHmDEakdmTC6gz5iZt/o7oht8bdFFDxkroM7IkpiJ7Yb4WGBfhnw232L7U8oWb/4Wu17JZ/qeMXmUwZuSk7utX0ucW9SKOuTPID1qtJXOTrqSiiueK4BmPtAQEVI0DB5lo1q4/RNQwLAuGU06i2B9k+Fk6NWjcbWoDyNltbyvmosCpmmjNXYxiCP6GYYnEeUUBkZGoMRhwcZCG0tSm26X9oUqkauD8daY9Y+0W6xysrkEe2HVb+Aqv2ljV+L1Vnftor1VuhAwQD+LPAmUGoh2VcWMT37lOWxYOYLbf93rTwcPZKGsGQwljwVdl4cfK6+UzNU2h4/u1+YvNtEBj2eVw55AQPz34IMXmiBTa4MuKSBp9Di0ZWfiAjNEzHvzxC7l9+Uqfo/YlEWnGocfrci0dPXGJGaRNEF85BIIm+YkmMP2LRbKgCLYt3x8a/7ba56barUWs9N5rjFZ1BikPfCBCuTXR8rX/8RKBQQj0g/yqoTg6TggQ6jou5U5oQ54NpSCQZntIJ6b8ub+V9Cni1NWmURoBqEDnoxXomGJokJLhwMNqHi0Quc5OMSbZW9CNaNbv5uPrZxNfcfnD5pA0LhId3S2VlS/YxCc8iYyPj6vDwBZw43ipwk2tU8pOOHAQ== [nom de la clé]
+```
+6. Copiez-collez votre clé `ssh-rsa AAAA...AQ== [nom de la clé]` dans le champ "Key" ("Clé") sur Giltab
+7. Cliquez sur le bouton "Add key" ("Ajouter la clé")
+8. C'est terminé : vous recevez dans la foulée un mail vous indiquant qu'une clé ssh a été ajoutée.

+ 41 - 0
HOWTO.md

@@ -0,0 +1,41 @@
+"*M'sieur, comment...*
+======================
+
+#### *... j'affiche l'état de mon clône ?"*
+
+```sh
+git status
+```
+
+#### *... j'ajoute des fichiers à prendre en compte au prochain commit ?"*
+
+```sh
+git add [file]
+```
+
+#### *... je commite (sauvegarde localement) mes modifications ?"*
+
+```sh
+git commit -m "[message qui DÉTAILLE les modifications]"
+```
+ATTENTION : Seuls les fichiers préalablement ajoutés seront sauvegardés.
+
+#### *... je pousse mes commits sur Gitlab (sauvegarde distante) ?"*
+
+```sh
+git push origin master
+```
+
+#### *... je récupère localement les fichiers que vous avez ajouté ?"*
+
+```sh
+git pull prof master
+```
+
+#### *... je récupère sur ordinateur2 ce que j'ai fait sur ordinateur1 ?"*
+
+1. Je **commite** sur ordinateur1 et **pousse** vers Gitlab (voir ci-dessus)
+2. Je **tire** sur ordinateur2 ce qui est maintenant sur Gitlab
+    ```sh
+    git pull origin master
+    ```

+ 54 - 0
README.md

@@ -0,0 +1,54 @@
+W31 - Programmation web côté serveur
+====================================
+
+Nous mettrons sur ce dépôt toutes les resources pour les TDs, TPS.
+Il sera impératif de savoir l'utiliser pour le TP noté.
+Suivez les instructions ci-dessous pour mettre en place votre environnement de travail.
+
+Pour les questions sur l'**utilisation** de votre dépôt, regardez la page [HOWTO](HOWTO.md).
+
+1 - Créer un **clône distant** sur Gitlab
+-----------------------------------------
+
+Il suffit de cliquer sur le bouton "Fork" en haut de la page, à côté du bouton bleu "Clone".
+
+**À FAIRE** : Ajouter votre enseignant de TP en tant que "Reporter" de votre dépôt (menu "Settings" => "Members").
+
+2 - Créer un **clône local** sur votre ordinateur
+-------------------------------------------------
+
+1. Installer git sur votre ordinateur personnel (rien à faire sur les postes de l'IUT) :
+```sh
+$ sudo apt install git
+```
+
+2. Configurer vos informations d'utilisateur :
+```sh
+$ git config --global user.name "[Prenom] [Nom]"
+$ git config --global user.email "[login]@unistra.fr"
+```
+
+3. Cloner :
+```sh
+$ git clone git@git.unistra.fr:[username]/W31.git
+```
+
+3 - Ajouter le **remote "prof"**
+--------------------------------
+
+En trois commandes :
+```sh
+$ cd W31
+$ git remote add prof git@git.unistra.fr:W31/W31.git
+$ git fetch prof
+```
+
+Si tout s'est bien passé, la commande :
+```sh
+$ git remote
+```
+affiche :
+```sh
+origin
+prof
+```

+ 76 - 0
TP1.md

@@ -0,0 +1,76 @@
+TP1 : requêtes GET/POST, cookies et sessions
+============================================
+
+Tous vos fichiers PHP devront être déposés dans le répertoire `public_html` à la racine de de votre répertoire personnel. Il sera ainsi accessible à l'adresse `https://webetu.iutrs.unistra.fr/~[LOGIN_UNISTRA]/chemin_vers_le_fichier`.
+
+Exemple :
+- Mon pseudo unistra est `jdupont`
+- Je dépose le fichier `test.php` dans le répertoire `jdupont/public_html/TP1/`
+- Je peux visualiser mon fichier interprété par le serveur PHP à l'adresse `https://webetu.iutrs.unistra.fr/~jdupont/TP1/test.php`
+
+
+Exercice 1 - Bonjour
+--------------------
+
+1. Écrivez un fichier PHP `bonjour.php` qui contient uniquement du code HTML5 **valide**. Visualisez-le avec Postman puis avec votre navigateur.
+
+2. Écrivez un fichier `bonjourGet.php` qui contient la structure de base d'un fichier HTML5 valide.
+    - Dans le `<body>`, ajoutez du code PHP qui affiche le contenu de la variable `module` du tableau `$_GET`.
+    - Testez avec Postman et votre navigateur, en transmettant ou nom une variable via la méthode `GET`.
+    - Ajoutez un **test** pour vérifier que la variable existe et n'est pas vide. Affichez un message si la condition n'est pas remplit.
+    - **Sécurisez** la variable
+
+3. Écrivez un fichier `bonjourPost.php` qui contient la structure de base d'un fichier HTML5 valide.
+    - Dans le `<body>` de `bonjour.php`, affichez le contenu des variables `firstname` et `lastname` du tableau `$_POST`
+    - Testez avec Postman en transmettant 0, 1 ou les 2 variables via la méthode `POST`
+    - Ajoutez le test d'existence des deux variables et **sécurisez-les**.
+
+4. Écrivez un fichier **HTML** `formulaire.html` qui contient un formulaire demandant à l'utilisateur son nom et son prénom avec des balises `<input>` de type texte. Ce formulaire doit avoir pour **action** le fichier `bonjourPost.php`. Testez avec votre navigateur l'affichage du formulaire et ce qu'il se produit lorsque vous le soumettez.
+
+5. Dans `bonjourPost.php`, ajoutez **en tout début de fichier** un test pour vous assurer que la page est demandée via la methode POST du protocole HHTP (regardez la doc du tableau [`$_SERVER`](https://www.php.net/manual/fr/reserved.variables.server.php)). Si ce n'est pas le cas, effectuez une demande de redirection vers la page `formulaire.html` (regardez la doc de la directive [`header`](http://php.net/manual/fr/function.header.php)).
+
+
+Exercice 2 - Générer une liste
+------------------------------
+
+1. Écrivez un fichier PHP `liste.php` qui produit un document HTML contenant
+**une liste de 10 items** générés en PHP avec une boucle `for`. Testez avec Postman et votre navigateur. Pensez à ajouter un test pour vérifier que votre variable est un entier et transtypez-la (cast).
+
+2. Écrivez un fichier PHP `listeGet.php` similaire à `liste.php`, où le
+nombre d'items à générer est disponible dans **la variable `nbItems` du tableau `$_GET`**. Testez avec Postamn et un navigateur.
+
+3. Écrire un fichier PHP `listePost.php` similaire à `liste.php`, où le
+nombre d'items à générer est disponible dans **la variable `nbItems` du tableau `$_POST`**. Testez avec Postamn.
+
+4. Tester le 3. avec votre navigateur. Pour cela, créez un fichier PHP contenant un **formulaire** avec `listesPost.php` pour action.
+
+
+Exercice 3 - Compteur de visites en session
+-------------------------------------------
+
+1. Écrire un fichier PHP `counter.php` qui :
+    - crée ou rétablit une session PHP pour le client
+    - initialise ou incrémente la variable `$counter` qui sert de compteur
+    - affiche le nombre de fois que le fichier a été demandé.
+
+    Testez avec Postman et le navigateur en appellant plusieurs fois la page `counter.php`. Le chiffre indiqué doit augmenter de 1.
+
+2. Écrire un fichier PHP `resetCounter.php` qui :
+    1. réinitialise le compteur présent dans la session
+    2. effectue une demande de redirection vers le fichier `counter.php` (regardez la doc de la directive [`header`](http://php.net/manual/fr/function.header.php)).
+
+    *Note* : ce script doit contenir exactement 3 instructions.
+
+3. Ajoutez un lien HTML vers le script `resetCounter.php` dans le `<body>` renvoyé par `counter.php`. Testez dans votre navigateur.
+
+4. Dans Postman ou votre navigateur, supprimez le cookie de session `PHPSSID` puis rechargez la page. Que se passe-t-il ?
+
+5. Réalisez un schéma comportant un navigateur, un serveur web et un module PHP. Présentez à l'aide de flèches et de numéros la série de requêtes/réponses qui sont échangées lorsque vous cliquez sur le lien ajouté à la question précédente. Pour chaque numéro :
+    - expliquer brièvement l'objet de la requête/réponse : qui envoie/réceptionne ?
+    - indiquez le contenu de la requête/réponse : entête, corps, variables, etc.
+
+
+Exercice 4 - Compteur de visites dans un cookie
+-----------------------------------------------
+
+Faites les questions 1 à 3 de l'exercice 3  sans utiliser les sessions mais uniquement un cookie qui contient la variable `counter`.

BIN
images/sshGiltab.gif