TP - Le PHP avancé et les fichiers

Environnement de travail

Pour pouvoir coder, il nous faut comme d’habitude, un éditeur de code (vous utilisez celui que vous voulez, le même que d’habitude si vous voulez !)

Il nous faut cependant un environnement supplémentaire !!!! Afin de pouvoir coder en php, il nous faut un environnement de travail particulier. Pour cela, il nous faut : apache, et PHP sur nos machines.

  • Sous Windows, vous pouvez suivre le tuto ici et utiliser MAMP.
  • Sous Linux, vous pouvez suivre le tuto ici et utiliser ici et utiliser XAMMP

Certains disposent peut-être déjà de cet environnement :

  • son serveur
  • utilisation de php-cli
  • solutions partagées entre vous
  • etc

Du moment que la solution marche et est en adéquation avec votre façon de travailler, il n’y a pas de problème.

Favorisez la solution MAMP(Windows) ou XAMMP(Linux) sur vos machines si vous avez un doute !!!!!!

Exercice 1 : Enregistrement d’élèves

  1. Créer la page inscriptionEleves.php contenant le formulaire suivant:
    • un champ pour le nom de l’élève
    • un champ pour le prénom de l’élève
    • un champ pour le date de naissance de l’élève
    • un champ pour la maison de l’élève
    • un champ pour le total de points de l’élève
    • un champ pour le pseudo
    • un champ pour le mot de passe

Les informations du formulaire devront être envoyées à la page enregistrerEleves.php

  1. Créer la page enregistrerEleves.php permettant d’enregistrer le contenu du formulaire dans un fichier infoEleves.csv. Cette page, enregistrerEleves.php, doit permettre de :
    • Ecrire dans le fichier infoEleves.csv
    • Contenir un lien permettant de revenir à la page précédente

TIPS

  • Voici un exemple du fichier csv :
Potter;Harry;31/07/1980;Gryffondor;100;harryDu64;ginny<3
Malfoy;Drago;05/06/1980;Serpentard;50;dragoDu93;voldy<3
Weasley;Ron;01/03/1980;Gryffondor;50;ronDu33;tfc4ever
Diggory;Cedric;10/03/1977;Poufsouffle;50;champion;choChang
  • Écrire dans un fichier csv => fputcsv

  • Les différents types de <input> => type

  • Enregistrer une seule ligne dans son csv avec comme délimiteur un ;

    $fp = fopen('monFichier.csv', 'a+');
    $monEleve= array(
        array("ines","monMdpsupersecret")
        );
    foreach ($monEleve as $fields) {
        fputcsv($fp, $fields,";");
    }
    fclose($fp);

Résultat

ines;monMdpsupersecret

Exercice 2 : Enregistrement de professeurs

  1. Créer la page inscriptionProfesseurs.php contenant le formulaire suivant :
    • un champ pour le nom
    • un champ pour le prénom
    • un champ pour la matière
    • un champ pour le pseudo
    • un champ pour le mot de passe

Les informations du formulaire devront être envoyées à la page enregistrerProfesseurs.php.

  1. Créer la page enregistrerProfesseurs.php permettant d’enregistrer le contenu du formulaire dans un fichier infoProfesseurs.csv. Cette page, enregistrerProfesseurs.php, doit :
    • Ecrire dans le fichier infoProfesseurs.csv
    • Contenir un lien permettant de revenir à la page précédente

TIPS

  • Voici un exemple du fichier texte :
Rogue;severus;Potions;rogueOne;lily<3
McGonagall;Minerva;Metamorphose;minerva;scoland<3
Hagrid;Rubeus;CreatureMagique;hagrid;touffu
  • Écrire dans un fichier csv => fputcsv
  • Enregistrer une seule ligne dans son csv avec comme délimiteur un ;
    $fp = fopen('monFichier.csv', 'a+');
    $monProf= array(
        array("ines","monMdpsupersecret")
        );
    foreach ($monProf as $fields) {
        fputcsv($fp, $fields,";");
    }
    fclose($fp);

Résultat

ines;monMdpsupersecret

Exercice 3 : Le portail et sa connexion

  1. Créer la page connexion.php contenant le formulaire suivant :
    • un champ pour l’identifiant
    • un champ pour le mot de passe
  2. Créer une page verificationConnexion.php. Dans cette page, ajouter le code permettant de vérifier si l’utilisateur est présent dans le fichier infoEleves.csv ou infoProfesseurs.csv et que son mot de passe est correct.
    • Si le mot de passe ou l’identifiant est incorrect rester sur la page
    • Si le mot de passe et l’identifiant sont corrects envoyer l’utilisateur sur la page accueil.php qui affichera des informations différentes en fonction de son profil :
      • Profil professeur : les informations du professeur
      • Profil de l’élève : les informations de l’élèves
      • Donc, il faut parcourir le bon fichier csv !
  3. Ajouter un bouton de deconnexion à accueil.php qui renvoi à la page de connexion.php

TIPS

  • Redirection (ne pas oublier l’instruction exit, sinon ça ne marchera pas)
if (maCondition){
    header('Location: accueil.php');
    exit();
}
header('Location: connexion.php');
  • Lire dans un fichier csv
if (($handle = fopen("monfichier.csv", "r"))) {
    while (($data = fgetcsv($handle, 1000, ","))) {
        echo "La colonne 0".$data[0];
        echo "La colonne 1".$data[1];
        echo "La colonne 2".$data[2];
    }
    fclose($handle);
}
  • Envoyer des informations à une autre page sans formulaire via l’url Page 1
if (maCondition){
    header('Location: accueil.php');
    exit();
}
header('Location: connexion.php?erreur=mdp');

Page 2

<?php
  echo "Il y a une erreur de ".$_GET['erreur'];
?>
  • Vérifier si une variable existe
<?php
    if (isset($_GET["error"])) {
        echo "<p> C'est pas bon ! </p>" ;
    }
?>
  • Enregistrer des informations dans une variable session
$maVar=42;
$_SESSION["reponse"]=$maVar;
**Attention**
*il ne faut pas oublier le ```session_start()``` au début du fichier lorsque l'on utilise les ```$_SESSION```*
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
    <title>Accueil</title>
</head>
<body>
    <?php echo "Bienvenue ".$_SESSION["nom"];?>
</body>
</html>
  • Créer un bouton deconnexion page 1
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
    <title>Page1</title>
</head>
<body>
    <form method="POST" action="page2.php">
        <input type="submit" name="OUT" value="deconnexion"/>
    </form>
</body>
</html>

page2

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
    <title>Page2</title>
</head>
<body>
    <?php
    if (isset($_POST["OUT"])){
        session_destroy();
    }
    ?>
</body>
</html>

Exercice 4 : Le portail administrateur

  1. Créer un fichier infoAdmin.csv contenant les informations suivantes :
Térrieure;Alex;admin;admin
Terrerieur;Alain;root;root
  1. Ajouter à la page verificationConnexion.php la possibilité à ce type d’utilisateur de ce connecter.
  2. Modifier la page accueil.php, en ajoutant le profil administrateur qui affiche la liste complète des professeurs et des élèves dans un tableau.

TIPS

  • Lire dans un fichier csv => fgetcsv
  • Ecrire dans un fichier csv => fputcsv

Exercice 5 : Vérification

Vérifier que l’on ne puisse pas atteindre la page accueil.php sans avoir été connecté via la page connexion.php