LYCEE TECHNIQUE MOHAMMED VI 2023/2024 2EME ANNEE BTS CWDM
Développement Web
Contrôle n°1
3 heures
Attention :
L’épreuve est sur 3 pages.
Les codes doivent obligatoirement être commentés.
Les indentations du code sont obligatoires.
Si vous repérez ce qui vous semble être une erreur, vous la signalez et vous
continuez vos réponses.
La clarté des réponses et la propreté sont prises en considération.
Début de l’épreuve
Questions de cours :
1. Définissez brièvement les éléments suivants :
a. URL
b. Protocole
c. Http
2. Expliquez la différence entre le Web et l’Internet ?
3. Expliquez la différence entre les méthodes GET et POST en PHP. Quand devriez-vous utiliser
l'une plutôt que l’autre ?
Exercice 1 : Suite de Fibonacci en PHP
Votre objectif à ce stade sera de créer un script PHP qui génère et affiche les N premiers
termes de la suite de Fibonacci. La suite de Fibonacci est définie comme suit : chaque terme
est la somme des deux termes précédents. Les deux premiers termes de la suite sont 0 et 1. La
suite est généralement définie comme suit :
F(0)=0,
F(1)=1,
F(n)=F(n−1)+F(n−2) pour n>1.
Ainsi, les premiers termes de la suite de Fibonacci sont 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, et ainsi
de suite.
1. En supposant que le nombre N est récupéré depuis un formulaire.
2. Ecrivez une fonction PHP récursive fibonacci($n){…} qui reçoit en paramètre
un entier et qui calcule récursivement la valeur de F(n).
3. Ecrivez une le script PHP qui affiche les N premier terme de la suite de Fiboncci
Exemple d’exécution :
Suite de Fibonacci (10 premiers termes) :
0, 1, 1, 2, 3, 5, 8, 13, 21, 34
PROF : ELALAMI MLY HICHAM
1/3
LYCEE TECHNIQUE MOHAMMED VI 2023/2024 2EME ANNEE BTS CWDM
Exercice 2 : Gestion des candidatures pour un concours
L’objectif de cet exercice est de développer une application web qui gère les candidatures
pour un concours. Les candidats accèdent à une première page de présentation nommée
'[Link] ', laquelle présente le concours et propose un lien pour candidater. Si le visiteur
choisit de déposer sa candidature, il clique sur le lien 'déposer une candidature', ce qui ouvre
une nouvelle page nommée '[Link]'. Cette dernière page permet à l'utilisateur, à
travers un formulaire HTML, de saisir les informations personnelles suivantes :
Nom
Prénom
Date de naissance
CINE
Adresse email
Adresse
Photo
Diplôme
Moyenne d’obtention du diplôme
La page '[Link]' appelle un script PHP nommé '[Link]', situé dans le
même dossier. Il est essentiel que les données soient transmises de manière sécurisée.
Pour la validation des données les contraintes suivantes sont prises en compte :
Toutes les informations sont obligatoires.
Uniquement des adresses électroniques 'gmail' sont acceptées
Le CINE (carte d’identité nationale électronique) est une chaine de caractère de
de 7 caractères et commence par une lettre ou deux lettres.
Le candidat doit télécharger sont CINE sous forme d’un document 'pdf' d’une
taille maximale de 2Mo.
Uniquement des photos de type image/jpeg ou image/png sont acceptées
avec une taille maximale de 2Mo.
Le candidat doit entrer le type de son diplôme : technicien supérieur, technicien
spécialisé, diplôme de UST, et doit également télécharger le recto de son
diplôme en document 'pdf' d’une taille maximale de 2Mo.
Uniquement les candidats ayant plus de 18 ans et moins de 25 ans (inclus) sont
acceptés.
La moyenne est un nombre réel sous une forme de '10.10'. de plus seule une
moyenne >= 10 est acceptée.
Travail à faire :
1. Ecrivez le code HTML permettant la création de la page '[Link]'. On suppose que
cette page contient une image en arrière-plan et un document 'pdf' qui représente
l’appel à candidature avec un lien 'déposer une candidature'.
2. Ecrivez le code HTML permettant la création de la page '[Link]'.
3. Développer la page '[Link]' en suivant les consignes suivantes :
PROF : ELALAMI MLY HICHAM
2/3
LYCEE TECHNIQUE MOHAMMED VI 2023/2024 2EME ANNEE BTS CWDM
a. Écrivez un script PHP pour la validation des informations : assurez-
vous de vérifier si toutes les informations soumises sont conformes aux
contraintes mentionnées précédemment. En cas de non-conformité pour
au moins une information, le formulaire sera rejeté, et l'utilisateur sera
informé de l'erreur (Vous pouvez décomposer ce script en plusieurs
fonctions).
b. Écrivez une fonction PHP qui vérifie que les fichiers téléchargés par
l’utilisateur sont valides en termes de types et de tailles.
4. Ecrivez un script qui :
Crée un dossier distinct pour chaque candidat, en le nommant selon son
numéro CINE, et ajoutez-y le CINE, la photo et le diplôme.
La CINE, le diplôme et la photo doivent être sauvegardés respectivement sous
les noms : identite_cine.pdf, diplome_cine.pdf et la photo_cine.jpeg ou
photo_cine.png
Les autres informations, quant à elles, seront stockées dans un fichier
'[Link]' dont le script doit vérifier l’existence. Les informations
seront stockées sous cette forme :
CINE:NOM:PRENOM:DATE DE NAISSANCE:EMAIL:TYPE DE DIPLOME:ADRESSE:MOYENNE DU DIPLOME
Par exemple une ligne du fichier '[Link]' peu ressemblée à cela :
E235334:BACHARI:Ahmed Rida:12-01-2004:[Link]@[Link]:Technicien
supérieur:n°3, Hay Lymoun ,targa marrakech:13.5
Remarques :
A la fin du traitement le script doit retourner un message pour informer
l’utilisateur que sa candidature à bien été enregistrée.
Les noms des candidats doivent être sauvegardés en majuscule, et les
prénoms en minuscule avec la première lette majuscule.
Le fichier '[Link]' et les dossiers correspondants à tous les
candidats sont tous sauvegardés dans le dossier parent './telechargements'.
5. Question de bonus : Ecrivez une fonction PHP qui permet de lister tous les candidats
par ordre de mérite(selon la moyenne)
Fin de l’épreuve
Annexe :Voici une liste de fonctions qui pourront vous servir :
date() : Retourne la date actuelle au format spécifié.
echo date('Y-m-d H:i:s');
date_create() et date_format() : Création d'un objet DateTime et formatage de la date.
$date = date_create('2024-01-07');
echo date_format($date, 'Y-m-d');
date_diff() : Calcul de la différence entre deux objets DateTime.
$date1 = new DateTime('2024-01-07');
$date2 = new DateTime('2024-12-31');
$difference = date_diff($date1, $date2);
mkdir($dossierCandidat, 0777, true) : pour créer un dossier en lui attribuant les permissions nécessaires
PROF : ELALAMI MLY HICHAM
3/3