Archives mensuelles : avril 2014

MOOC OpenClassrooms PHP/MySQL – semaine 4

Cette dernière semaine concerne l’utilisation « avancée » de PHP. En quoi consiste donc l’utilisation « avancée » de PHP pour les auteurs de cette formation ?

Il s’agit principalement de l’utilisation des expressions rationnelles et de la programmation orientée objet ou POO.

La première chose que je remarque en allant sur la page dédiée à cette dernière semaine, c’est l’absence de TP. Je suis déçu (comme beaucoup, si j’en crois les réactions sur le forum). C’est très dommage. Même si le TP de la semaine précédente avait demandé beaucoup de travail aux participants, il n’y a rien de plus formateur que d’utiliser ce que l’on apprend sur des cas concrets.

Les cours en vidéo :

Trois vidéos sont disponibles cette semaine.

  1. Les expressions régulières, partie 1/2
  2. Les expressions régulières, partie 2/2
  3. La programmation orientée objet

1. Les expressions régulières, partie 1/2 (16’25)

Une introduction à l’utilisation des expressions rationnelles  pour effectuer des recherches dans un texte (preg_match()). Présentation de la syntaxe des expressions rationnelles, des options disponibles (sensibilité à la casse ou non…), des délimiteurs, des classes de caractères… au travers de différents exemples.

2. Les expressions régulières, partie 2/2 (10’10)

Utilisation des expressions rationnelles pour effectuer des remplacements dans un texte (preg_replace()) et/ou en extraire des parties.

3. La programmation orientée objet (15’38)

Introduction à la programmation orientée objet : les classes, les attributs, les méthodes…

Une présentation assez simple de la POO destinée aux débutants avec des exemples pour gérer un membre d’un site web. On y apprend comment créer une classe, des attributs et des accesseurs.

Les exercices :

Un QCM composé de dix questions comptant chacune pour un point est proposé.

Six questions concernent les expressions rationnelles et quatre la programmation orientée objet. Elles sont simples dans l’ensemble et n’importe qui ayant visualisé les vidéos devrait être capable d’y répondre correctement.

Les échanges sur le forum :

Les messages échangés concernent principalement l’utilisation et la conception des expressions rationnelles. Il s’agit d’un sujet vaste et complexe et les participants se posent beaucoup de questions. Certains vont assez loin dans la pratique et conçoivent des scripts assez avancés pour tester les expressions rationnelles.

Au final, assez peu de sujets traitent de la POO. C’est assez normal. Il y a déjà eu assez d’informations à assimiler durant les trois premières semaines et comme il n’y a pas de TP, tout le monde n’est pas motivé pour s’intéresser réellement à la POO et l’expérimenter.

Mon sentiment concernant cette quatrième et dernière semaine :

Cette dernière semaine est intitulée « Utilisation avancée de PHP ».

En fait, nous avons seulement une présentation des expressions rationnelles et une brève introduction à la programmation orientée objet. C’est assez peu finalement.

Autant la présentation des expressions rationnelles est intéressante, autant l’introduction à la POO est trop succincte pour être réellement utile.  C’est un sujet bien trop vaste à mon avis pour être abordé en quinze minutes à la fin d’un cours.

Bref, je suis un peu déçu par cette dernière semaine. Il n’y a pas à mon sens réellement de « PHP avancé » cette semaine, qui ne tient donc pas ses promesses. D’autre part, je trouve discutable le choix de survoler la POO à la fin du cours. La programmation orientée objet mériterait un MOOC à elle seule tellement il y a de choses à voir.

Les participants débutants ont pas mal d’informations à assimiler durant les trois premières semaines. Peut-être aurait-il été plus intéressant par exemple d’insister un peu plus sur la sécurité (les risques, les différents types d’attaques et les contre-mesures à utiliser) et de proposer un TP récapitulatif, un peu comme pour le MOOC HTML5/CSS3 (d’ailleurs ce TP a été réclamé par un certain nombre de participants sur le forum).

Pour conclure…

Je suis content d’avoir participé à ce premier MOOC PHP/MySQL. L’ambiance a toujours été bonne sur les forums, les participants étaient motivés et à l’écoute de tous les conseils que pouvaient leur donner les plus expérimentés. Les vidéos étaient de bonne qualité, à part quelques problèmes de son sur certaines la première semaine. Je pense que les participants ayant bien suivi les vidéos ont pu acquérir quelques bases de PHP, ceux s’étant en plus aidé du support écrit ayant sans aucun doute plus progressé.

Je note deux points négatifs : la rareté des travaux pratiques (un seul sur quatre semaines, même si l’étude et la reproduction du code présenté dans les vidéos pouvaient passer dans la pratique) et la programmation orientée objet survolée dans la quatrième semaine. Rien ne remplace la pratique pour comprendre et assimiler le fonctionnement de PHP. Par conséquent, je pense qu’un TP par semaine aurait été mieux, avec une difficulté croissante naturellement. Par exemple : première semaine, manipulation des variables, calculs, boucles et tests. Deuxième semaine : transmission des informations en utilisant un formulaire et utilisation de la session et des cookies (identification d’un utilisateur par exemple). Troisième semaine : même chose que la deuxième semaine, mais en stockant les informations dans une base de données. Quatrième semaine : analyse des failles possible et optimisation de la sécurité. Les participants auraient sans doute été plus conscients de leur progression avec quatre TPs. Par contre, ça leur aurait demandé plus de travail durant la semaine (2h30 prévues selon OpenClassrooms, ce qui est je pense déjà sous-estimé), entre la consultation des vidéos, la réalisation des TPs, et la correction de trois TPs des autres participants. Il faudrait je pense également prévoir un MOOC spécifique pour le « PHP avancé » afin d’y aborder les sujets importants de façon plus complète qu’un survol lors de la dernière semaine.

Pour conclure, j’ai passé quatre semaines sympathiques à suivre ce MOOC. Les échanges sur les forums ont été riches et m’ont permis de faire quelques « rencontres » intéressantes. L’organisation et les outils (qualité des vidéos, correction du TP) ont fait beaucoup de progrès depuis le MOOC HTML5/CSS3 auquel j’ai participé fin 2013, même si il reste encore des choses à améliorer (plus de travaux pratiques, forum peu pratique à utiliser, tous les messages étant affichés à la suite sans possibilité de classement par discussion…). Le fonctionnement des MOOCs a été modifié : désormais, il est possible d’en commencer n’importe quand, chaque partie étant validée une semaine après l’inscription effective. C’est très intéressant pour ceux qui ne peuvent pas forcément s’organiser comme ils le souhaitent et libérer suffisamment de temps pour suivre un MOOC à dates fixes.

A l’heure où j’écris ces lignes, le MOOC n’est pas encore tout à fait terminé. Je ne connais donc pas exactement le nombre d’inscrits, ni le nombre de participants ayant réellement terminé le MOOC. Je ne manquerai pas de vous en faire part dès qu’OpenClassrooms publiera les statistiques…

MOOC OpenClassrooms PHP/MySQL – semaine 3

Je commence la rédaction du compte rendu de cette troisième du MOOC alors que s’achève bientôt la quatrième… Il semblerait que j’aie pris un peu de retard.

Durant cette semaine, nous avons abordé l’utilisation d’une base de données avec PHP, en l’occurrence, MySQL, ainsi que naturellement, le langage SQL.

Organisation du MOOC :

L’organisation reste la même que celle des autres semaines, à un détail près : un TP est prévu. Enfin de la pratique ! 🙂

Les cours en vidéo :

Sept vidéos sont disponibles cette semaine.

  1. Présentation des bases de données
  2. phpMyAdmin
  3. Lire des données
  4. Écrire des données
  5. Les fonctions SQL
  6. Les dates en SQL
  7. TP : un mini-chat

1. Présentation des bases de données (6’26)

Introduction aux systèmes de gestion de bases de données et à MySQL en particulier, et quelques exemples de requêtes SQL.

2. phpMyAdmin (12’00)

Utilisation de phpMyAdmin pour créer, gérer des bases de données, des tables et manipuler les données via l’interface ou des requêtes SQL.

3. Lire des données (23’38)

Récupération et sélection de données dans une base. Utilisation de PDO MySQL.

4. Écrire des données (8’46)

Création de requêtes de création, de mise à jour et de suppression de données. Utilisation de PDO MySQL et des requêtes préparées.

5. Les fonctions SQL (10’33)

Présentation des fonctions SQL. Comptage des résultats, calcul de moyenne, transformation en majuscules ou en minuscules…

6. Les dates en SQL (8’15)

Fonctions de manipulation des dates en SQL.

7. TP : un mini-chat (2’50)

Présentation du sujet du TP :  la réalisation d’un mini-chat permettant à un utilisateur de saisir un pseudo et un message, d’enregistrer ce dernier dans une base de données, et de consulter la liste des messages existants.

Les exercices :

Un QCM composé de dix questions comptant chacune pour un point est proposé.

Les questions ont toutes pour sujet l’utilisation des bases de données (logique non ? ;-)). Elles sont relativement simples et reprennent les sujets abordés dans les vidéos.

Le TP :

Cette semaine est à mon avis sans aucun doute plus intéressante. Enfin l’occasion de mettre en pratique les connaissances acquises au travers des cours. Le sujet en lui-même n’est pas très complexe, il s’agit de la réalisation d’un « mini-chat » permettant à l’utilisateur d’enregistrer un message et de consulter la liste des messages existants. Ce TP permet de mettre en œuvre la théorie abordée dans les chapitres précédents : transmission de données entre les pages, utilisation d’un formulaire, lecture et écriture dans une base de données, utilisation de session et/ou de cookie…

Le TP sera corrigé par les participants eux-mêmes. Chaque participant doit envoyer son travail, et pour obtenir sa note validée, corriger lui-même trois TPs. Chacun obtiendra par conséquent trois notes provenant de trois correcteurs différents. La note moyenne comptera pour la réussite du MOOC au même titre que celles obtenues pour les QCM.

Pour faciliter la correction, un barème précis (présence de fichiers, fonctionnalités…) est fourni.

J’ai corrigé trois copies, et j’ai mis de mémoire les notes de 8, 9 et 10. De bonnes copies, avec quelques petits défauts que je me suis permis de signaler à leurs auteurs. Je remarque que les débutants ne commentent pas beaucoup leur code, et je les encourage à le faire. 🙂

Ma version du TP est ici. Elle vaut ce qu’elle vaut. J’ai remplis je pense le cahier des charges. Je n’ai pas créé une interface sophistiquée, préférant répondre à la demande, et uniquement à la demande. De plus, étant donné que les corrections sont effectuées par des débutants la plupart du temps, et que j’ai choisi une solution avec un certain nombre de fichiers séparés, j’ai ajouté à la racine du TP un fichier LISEZMOI.txt décrivant avec suffisamment de précisions l’installation, la configuration, l’utilisation et les choix techniques pour la notation.

Les échanges sur le forum :

Les échanges sont très nombreux cette semaine. Il est naturellement principalement question de la réalisation du TP et des difficultés rencontrées. Il y a un peu de tout, des propositions, des appels à l’aide, des réponses à ces appels… Beaucoup de débutants trouvent l’exercice très difficile. Certains le trouvent même impossible à réaliser. Des encouragements les aideront à continuer. Je pense que nous verrons à la fin du MOOC les statistiques qui nous diront combien de personnes ont rendu leur TP et quelles notes ont été distribuées. Il y a des débats sur les différentes façons de faire : un fichier ou bien plusieurs, prise en compte de la sécurité au travers des attaques XSS et des injections SQL, utilisation de la session et / ou d’un cookie pour la mémorisation du pseudo de l’utilisation…

Mon sentiment concernant cette troisième semaine :

Enfin de la pratique !!!

Tout le monde l’attendait ce TP. C’est là l’occasion d’utiliser tout ce qui a été vu durant ces trois semaines. Il a également permis à beaucoup de mesurer le gouffre qui sépare la théorie de la pratique. Ce qui paraissait pourtant simple dans le cours est finalement plus complexe que prévu à mettre en place avec un véritable exemple.

Certains participants se plaignent de la complexité du TP. En effet, il mêle tous ce qui a été vu jusque là, et cela fait sans doute beaucoup d’un seul coup lorsque l’on est débutant. Le temps de travail prévu par semaine (2h30) a dans ce cas sans aucun doute été largement sous-estimé.

Comme je l’ai fait remarquer sur le forum, il aurait sans doute été judicieux (mais plus long et complexe à mettre en place, ne serait-ce que parce qu’il faut corriger les copies) d’avoir un TP par semaine, avec une difficulté croissante au fil des semaines. J’ai même poussé le vice à proposer mon aide mon la rédaction de ces TPs… il faudra maintenant que je trouve le temps de le faire. 🙂

La quatrième et dernière semaine traitera de l’utilisation avancée de PHP, avec les expressions rationnelles, et la programmation orientée objets (POO).

MOOC OpenClassrooms PHP/MySQL – semaine 2

Mes impressions concernant la première semaine du MOOC « Concevez votre site web avec PHP et MySQL » organisé par OpenClassrooms ont été publiées ici.

Comme promis, voici un aperçu de la deuxième semaine de ce MOOC, dont le résumé est le suivant :

Transférer des informations d’une page à une autre est une des clés d’un site web dynamique. Que ce soit dans la barre d’adresse ou via des formulaires, il existe de nombreux moyens de faire transiter des données.
Nous découvrirons aussi les mécanismes des sessions et des cookies, deux techniques très pratiques pour retenir des informations.

Organisation du MOOC :

Depuis cette semaine, l’organisation des MOOCs OpenClassrooms a été modifiée. Jusqu’à maintenant, un MOOC commençait un lundi, et la semaine s’achevait le dimanche à 23h59 avec la date limite de validation des exercices. Même si chaque participant était évidemment au courant de ce fonctionnement et des dates limites, des problèmes d’emploi du temps, de charge de travail ou encore de connexion (nous ne sommes pas tous égaux devant l’accès à Internet, les participants se situant dans le monde entier) pouvaient en empêcher certains de valider la semaine dans les temps. Si la semaine n’était pas validée, la note de l’exercice était de 0, et même si elle n’est pas éliminatoire, cela provoquait assurément de la frustration chez ceux qui avait rencontré un problème. Cela représentait également un handicap pour ceux qui souhaitaient obtenir la certification OpenClassrooms à la fin (la validité et la reconnaissance de cette certification est un autre débat).

Désormais, il est possible de rejoindre un cours OpenClassrooms quand on le souhaite. On a alors accès directement à la semaine 1 et l’on dispose de 7 jours complets pour valider le ou les exercices. La deuxième semaine sera disponible 7 jours après l’inscription, et ainsi de suite pour les semaines suivantes.

Toutes les informations concernant cette nouvelle organisation se trouvent ici.

Pour le reste, le fonctionnement est le même que celui de la semaine 1 : des cours en vidéo (trois cette semaine pour une durée totale d’un peu moins d’une heure), un QCM et le forum.

Les cours en vidéo :

Trois vidéos sont disponibles cette semaine.

  1. Transmettre des données avec l’URL
  2. Transmettre des données avec les formulaires
  3. Variables superglobales, sessions et cookies

Elles sont dans l’ensemble plutôt de bonne qualité, et je n’ai pas constaté de différences de niveau sonore comme dans celle de la première semaine (je n’ai d’ailleurs pas non plus relevé de remarque à ce sujet sur le forum comme ça avait été le cas pour la semaine 1).

 1. Transmettre des données avec l’URL (18’58)

Présentation au travers d’un exemple simple de la façon dont il est possible d’échanger des informations entre le client et le serveur en se servant de l’url. Au passage, quelques conseils avisés sont distillés concernant la sécurité de base (ne jamais faire confiance aux données provenant du client 😉 ) et quelques fonctions permettant de tester et filtrer les variables sont proposées.

2. Transmettre des données avec les formulaires (13’58)

Démonstration du fonctionnement d’un formulaire, présentation des méthodes GET et POST, de la récupération et du traitement des données en PHP. Il est de nouveau conseillé de ne jamais faire confiance aux données provenant de l’utilisateur (introduction très rapide aux attaques XSS, utilisation de htmlspecialchars()).

 3. Variables superglobales, sessions et cookies (14’43)

Présentation des différentes variables superglobales, notamment $_SERVER, $_SESSION, et $_COOKIE et de leur utilisation pour la transmission d’informations d’une page à une autre.

Les exercices :

Un QCM composé de dix questions comptant chacune pour un point est proposé.

Les questions se font un peu plus précises, ce qui est normal puisque nous sommes rentrés dans le vif du sujet. Elles mettent en évidence les difficultés de compréhension que les participants peuvent parfois rencontrer. On retrouve notamment sur le forum beaucoup de questions concernant l’utilisation des timestamp, pour calculer la date d’expiration d’un cookie par exemple. Beaucoup confondent date d’expiration (date courante + durée de vie en secondes) et durée de vie du cookie. La dernière question du QCM a fait l’objet de plusieurs « contestations » sur le forum alors qu’à mes yeux elle était très claire.

Un exercice supplémentaire noté devait également être proposé cette semaine. Il l’a été quelques temps mais a été retiré rapidement, le système de notation entre participants n’étant visiblement pas encore tout à fait au point. Certains l’ont néanmoins fait et leurs contributions ont fait l’objet de nombreuses discussions sur le forum.

J’espère que le système sera au point pour la semaine 3.

Les échanges sur le forum :

Les échanges sont nombreux cette semaine encore. Normal, on attaque les choses sérieuses avec la gestion des formulaires. Beaucoup de questions concerne le code, la façon de gérer le formulaire côté serveur, les erreurs commises.

On y parle également de sécurité, d’injection, de filtrage… de bonnes pratiques en général. Tout le monde n’est pas d’accord sur les méthodes à adopter, sur le fait qu’il faille filtrer ou non les données, mais dans l’ensemble, grâce aux échanges entre les participants de différents niveaux, tout le monde progresse.

 Mon sentiment concernant cette deuxième semaine :

Si les vidéos sont un peu plus « pointues » que celles de la semaine 1 qui abordaient les notions de base, elles ne fournissent encore une fois qu’une base à partir de laquelle travailler. Elles sont suffisamment claires pour permettre d’amener les participants à la réalisation d’un petit formulaire et au traitement des données envoyées, et elles laissent suffisamment de points dans l’ombre pour qu’ils soient obligés de chercher des informations ailleurs. Le réflexe « je vais voir dans le manuel PHP » commence à rentrer. 🙂

Les discussions sur le forum sont logiquement plus « pointues » également, avec des questions pratiques concernant l’utilisation des variables, le traitement des données côté serveur, la sécurisation d’un formulaire… Quelques questions ont également été posées sur des notions qui sont abordées dans le cours PHP au format PDF pour ceux qui y ont accès et qui ne sont pas mentionnées dans les vidéos (forcément moins complètes), comme les constantes. Les deux supports sont bien entendu complémentaires.

La semaine prochaine, nous allons aborder l’utilisation de bases de données avec PHP, et notamment MySQL et le langage SQL.

A bientôt pour la semaine 3 du MOOC.