TP 2 PHP

Tous les exercices de ce TP seront réalisés dans votre répertoire ~/public_html/TP2_PHP.

Authentification Apache

Après avoir lu l'aide-mémoire Apache, on va créer un répertoire AuthApache contenant un fichier .htaccess qui nécessitera une authentification pour tout accès :
mkdir AuthApache;cd AuthApache;htpasswd -c .htpasswd un Création du fichier des mots de passe avec un utilisateur "un"
cat .htpasswd Affichage du fichier des mots de passe un:$apr1$rj4.....$OEZD1ySPhILc.IbJ40euO0
htpasswd .htpasswd deux Ajout d'un utilisateur "deux"
emacs index.html & Créer un fichier index.html
URL : localhost/~jdupont/TP2_PHP/AuthApache/index.html Accéder au fichier sans problème cliquer ICI
emacs .htaccess Editer le fichier spécifiant les droits d'accès
AuthType Basic
AuthUserFile "/nfs1/.../AuthApache/.htpasswd"
AuthName "Le Domaine Privé"
<Limit GET POST>
require valid-user
</Limit>
Spécifier les droits d'accès
URL : localhost/~jdupont/TP2_PHP/AuthApache/index.html Accéder au fichier en essayant plusieurs utilisateurs invalides avant de choisir un (resp. deux) de mot de passe 1 (resp. 2)
créer d'autres fichiers et sous-rép. Accéder à ces fichiers, changer de site, revenir
Ecrire un script php permettant de changer son authentification. Script permettant de se réauthentifier en cliquant sur le bouton : Nouvelle authentification. cliquer ICI

Authentification PHP

On crée un répertoire AuthPhp dans lequel on crée un script php non protégé par Apache ni par php et qui affiche les informations de php :
emacs phpinfo.php
<?php phpinfo(); ?>
Afficher les informations ! cliquer ICI
recopier dans le répertoire TP2_PHP/AuthPhp les 2 fichiers suivants : index.php et inc-auth.php en supprimant l'extension .txt. Pour tester l'authentification, cliquer ICI
Après s'être authentifié via PHP, revoir phpinfo ! Les informations d'authentification sont valables pour toutes les pages du répertoire.
Revoir maintenant les informations d'authentification du répertoire "AuthApache" AuthApache/authinfo.php ! Les informations d'authentification restent valables sur la base de chaque répertoire.

Courrier PHP

Envoyer des courriels (emails) depuis un site web peut être réalisé simplement en faisant appel à l'application de mail (kmail, outlook, messenger) par défaut du système. Pour cela, il suffit de définir un lien dont la référence (href) soit une URL du type mailto:un@dom.fr, deux@aine.com.

Par exemple, si vous cliquez sur le lien suivant, votre application de mail sera ouverte avec un et deux comme destinataires : cliquer ICI.

Une autre possibilité consiste à écrire un formulaire html contenant des champs de saisie pour les destinataires, le sujet, le corps du message et qui lorsqu'il est soumis appelle un script php exécutant la fonction mail :

boolean mail ( string to , string subject , string message , string additional_headers , string additional_parameters )

mail poste automatiquement le message message à destination de to . Les destinataires multiples doivent être séparés par des virgules. Les emails avec pièces jointes ou contenus particuliers (comme les emails en HTML, par exemple), peuvent être réalisés avec cette fonction. Il faut respecter l'encodage MIME. Pour un exemple, cliquer ICI.

Réaliser ce formulaire en vérifiant que les valeurs des champs sont conservés après envoi du courriel.

Téléchargement

Le téléchargement de fichier peut être effectué :

Déchargement

Pour cela, il suffit de réaliser un lien référençant le fichier à décharger, par exemple : Cliquer ici. Si le type du fichier est affichable par le navigateur (comme c'est le cas ici), il sera affiché (donc déchargé), sinon il sera proposé à l'utilisateur soit de sauver le fichier, soit de lancer l'application associée. Remarquons que tout lien peut être enregistré en utilisant le bouton droit de la souris sur le lien.

Chargement

Principe : il faut réaliser un formulaire de chargement envoyant une requête POST. L'action effectuée (script) après soumission doit vérifier que le fichier chargé est du bon type et de la bonne taille puis l'utiliser depuis la zone temporaire (tmp/) ou il est chargé. Le fichier temporaire sera automatiquement effacé de la zone à la fin du script, s'il n'a pas été déplacé ou renommé. Par exemple, le formulaire sera :
<FORM ENCTYPE="multipart/form-data" ACTION="traitement.php" METHOD="POST">
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" value="1000">
Envoyez ce fichier : <INPUT NAME="fichier" TYPE="file" SIZE=15>
<INPUT TYPE="submit" VALUE="Envoyer le fichier">
</FORM>

Rédiger un script php permettant de télécharger un fichier texte de moins de 5 caractères puis le contenu de ce fichier sera affiché. Pour voir un exemple, Cliquer ici.

Session

Lire l'aide-mémoire PHP pour visualiser les fonctions de gestion de session puis réaliser un script permettant de démarrer une session puis d'enregistrer ou de supprimer des variables de sessions saisie dans un formulaire html comme dans l'exemple suivant.
Activer et désactiver les cookies dans votre navigateur. Remarquer qu'avec les cookies activés, une seule session peut être active même avec plusieurs fenêtres de navigateur, tandis qu'avec la réécriture d'URL, chaque fenêtre peut ouvrir sa propre session et que la session est perdue si on navigue et que l'on retourne sur la page session.php sans la variable PHPSESSID définie dans l'URL !

Cookie

Lire l'aide-mémoire PHP puis créer un script php permettant d'affecter une variable de cookie "nomUtilisateur" avec un champ saisi par l'utilisateur. Ce script affichera de plus l'ensemble des variables de cookie.
Ouvrez une session PHP et vérifiez que le PHPSESSID apparaît bien ! Voir l'exemple suivant.
Exercice : simuler le panier (caddie) d'un site de commerce à l'aide de cookies associé à chaque aricle et contenant le nombre d'articles commandés. Un formulaire permettra d'ajouter ou de retirer des articles du panier ! Voir l'exemple suivant.

Voilà, c'est fini ! La Correction de ce TP est visualisable avec la même méthode que pour le TP1 PHP.
phpinfo.php
index.php
telecharger.php
cookie.php
petit.html
mail.php
paniercookie.php
session.php
decharge.php