Conception de sites web dynamiques

TP7 - PHP-PostgresQL

Supprimer tous les fichiers contenant votre mot de passe de votre répertoire public_html.

Vous devez déposer les solutions dans le répertoire ~public_html/TP7/ avant le 29 Avril 2012 à 23h59. Une fois cette date limite est passée, la note zéro vous sera systématiquement attribuée pour ce TP. La date limite est bien le 29 Avril et non pas le 22/04.

La date limite pour rendre le projet est le 13/05/2012 à 23h59.

Interaction avec une base de données PostgreSQL

Exemple : Affichage du contenu de la table auteurs de la base votre_login dans un tableau HTML
<?php
// Connexion, sélection de la base de données
$dbconn = pg_connect("host=opale.ens.math-info.univ-paris5.fr dbname=votre_login user=votre_login password=votrepasswd") or
die('Connexion impossible : ' . pg_last_error());
// Exécution de la requête SQL
$query = 'SELECT * FROM nom_du_tableau';
$resultat = pg_query($dbconn, $query) or die('Échec requête : ' . pg_last_error());
// Affichage des résultats en HTML
echo "<table>\n";
while ($line = pg_fetch_row($resultat))
{
    echo "\t<tr>\n";
    foreach ($line as $col_value)
    {
        echo "\t\t<td>$col_value</td>\n";
    }
    echo "\t</tr>\n";

}
echo "</table>\n";
// Libèrer le resultset
pg_free_result($resultat);
// Fermer la connexion
pg_close($dbconn);
?>

Exercice 1

Via l’interface graphique de phpPgAdmin (www.ens.math-info.univ-paris5.fr), créer un nouveau tableau utilisateurs qui contient deux colonnes : Login et Mot de passe. Remplir le tableau avec plusieurs valeurs de votre choix.
Essayer d'ouvrir une connexion de PHP à la base de données et afficher le contenu du tableau utilisateur dans un tableau HTML.

Exercice 2

L’objectif de cet exercice est de réaliser un formulaire HTML de type login et mot de passe pour authentifier les utilisateurs déjà inscrit. Vous devez laisser la possibilité pour les nouveaux utilisateurs de s’enregistrer.

Résultat attendu      inscription
Figure 1: Login et Inscription
  1. Écrire un formulaire HTML ("login.html") qui demande à l'utilisateur son login et son mot de passe en modifiant l'exercice 2 du TP5 (le formulaire dans le site web de Zozor). 
  2. Ajouter ensuite le script PHP qui traite le formulaire et qui vérifie l’existence du login fourni par l'utilisateur dans la BD, ensuite il vérifie le mot de passe. Si l’utilisateur est reconnu et le mdp est correct, on affiche le contenu de la page web du "zozor" réalisée dans l'exercice II en TP4 (redirection), c.à.d une fois le client authentifié, il sera redirigé vers la page du Zozor.
  3. Le login et le mot de passe sont stockés dans la base de données, et un utilisateur déjà inscrit ne devra pas avoir la possibilité de réinscrire en utilisant le même login.
    Ecrivez un script "inscription.php" qui sera appelé pour effectuer le traitement des données soumises. Plusieurs cas doivent être traités par le script : si le "username" et/ou le "mot_de_passe" n'ont pas été saisi, un message d'erreur sera affiché et le formulaire ne sera pas soumis (penser à utiliser l'attribut "required" en HTML5). Dans le cas contraire, le username et le mot de pass seront ajoutés dans la BD. Penser à demander de saisir 2 fois le mot de passe dans le formulaire d'inscription, pour parer à une éventuelle faute de frappe et vérifier que les deux valeurs sont les mêmes.
  4. L'utilisateur devra rester authentifier pendant toute la durée de sa visite du site Zozor. Attention à un utilisateur malicieux, qui pourra rentrer l’adresse URL d’une page et se retrouve connecter sans s’authentifier.

Vous utilisez le tableau super-global $_SESSION pour ajouter ou retirer des variables de ce tableau à votre guise, et les variables stockées dans ce tableau resteront pendant toute la durée de la session (et non uniquement pendant la visite de la page en cours comme c’était le cas avec $_GET et $_POST).
– Créer une session :
     <?php session_start(); ?>

Important : Cette fonction doit être placée avant tout code HTML dans votre page (pour des raisons d'accès au cache du navigateur)

Modifier la page web de Zozor (Eexercice 2 dans le TP5) pour vérifier qu’un utilisateur non authentifié, mais connaissant l'adresse url, ne pourra pas accéder à la page sans authentification.
Modifier le lien ("voir l'article" en haut à droite de la page Zozor) dans l'exercice 2 du TP5, à "Deconnexion". Ce lien lancera le script « logout.php » (à écrire)

Exercice 3

Écrire un script PHP qui afficher le contenu du répertoire du travail courant de la façon suivante (nom, type, size):

 

Résultat attendu     
Figure 2: affichage du contenu du répertoire du travail courant
Un click sur le nom du fichier devra afficher le contenu.

Exercice 4

Écrire un formulaire qui permet de télécharger deux fichiers (un type PDF et un deuxième de type ppt) sur le serveur. La taille maximum de ces fichiers ne doit pas dépasser 500K.

Lorsque l'utilisateur (inscrit dans votre BD) appuie sur le bouton "Upload files", les deux fichiers seront déposés dans un répertoire ayant le même nom que son login (à créer si c'est la première connexion), et il sera redirigé vers une page contenant l'affichage des fichiers dans son répertoire comme dans la figure 2.

N'oublier pas de vérifier la présence de deux fichiers avant de valider la soumission du formulaire.

Résultat attendu     
Figure 3: Téléchargement de 2 fichiers (PDF et JPG)

 

 

Osman SALEM, Arnaud MEUNIER, Maik MERCURI, Azedine MANI