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é :
- du site web vers le client : download ou déchargement;
- du client vers le site web : upload ou chargement;
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