Créée le, 19/06/2015

 Mise à jour le, 19/05/2019

Visiteurs N°  




Accueil
Nouveau Blog Nouveautés Moteur de Recherche Votre Caddie Pour Vos Achats Votre Espace Membre Vos Signets et Vos Jeux Préférés Page de Bienvenue Statique Site en Français Site en Anglais
Sommaires
Électronique Fondamentale Technologie Fondamentale Testez vos Connaissances Électronique Théorique Digitale Électronique Pratique Digitale Lexique Électronique Numérique Data book TTL Data book CMOS Dépannage TVC Mathématique
Micro-ordinateurs
Théorique des Micro-ordinateurs Testez vos Connaissances Pratique des Micro-ordinateurs Glossaires sur les Ordinateurs
Physique
La lumière Champ d'action Rayonnement Électromagnétique
Technologies
Classification des Résistances Identification des Résistances Classification des Condensateurs Identification des Condensateurs
Formulaires Mathématiques
Géométrie Physique 1. - Électronique 1. 2. - Électronique 1. 3. - Électrotechnique 1. 4. - Électromagnétisme
Accès à tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages N. B. M. - Tome I - 201 Pages E. T. M. - Tome I - 554 Pages Business à Domicile Ouvrages 34 pages gratuits Nos E-books Logiciel Géométrie Logiciel Composants Électroniques
Aperçu de tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages E. T. M. - Tome I - 554 Pages Logiciel Géométrie Logiciel Composants Électroniques
Nos Leçons aux Formats PDF
Électronique Fondamentale Technologie Fondamentale Électronique Théorique Digitale Électronique Pratique Digitale Théorique des Micro-ordinateurs Mathématiques
Informatique
Dépannage Win98 et WinXP et autres Dépannage PC Glossaire HTML et Programmes PHP et Programmes JavaScript (en cours de travaux) Création de plusieurs Sites
Forums
Forum Électronique et Infos Forum Électronique et Poésie
Divers et autres
Formulaire des pages perso News XML Statistiques CountUs Éditeur JavaScript Nos Partenaires et nos Liens Utiles Gestionnaire de Partenariat Nos Partenaires MyCircle Sondages 1er Livre d'Or 2ème livre d'Or

Signets :
  Leçons suivantes        Leçons précédentes     Bas de page
  Cliquez ici pour la leçon suivante ou dans le sommaire prévu à cet effet


Implémenter un gestionnaire de mailing lists (2ème partie) :



Configuration de la base de données :


Pour cette application, nous devons enregistrer les informations suivantes :

  Lists. Mailing lists auxquelles les utilisateurs peuvent s'inscrire.

  Subscribers. Utilisateurs du système et leurs préférences.

  Sub_lists. Enregistrement qui recense les utilisateurs et les listes auxquelles ils se sont inscrits (une relation plusieurs-vers-plusieurs).

  Mail. Enregistrement des messages E-Mails qui ont été envoyés.

  Images. Comme nous souhaitons pouvoir envoyer des E-Mails contenant plusieurs fichiers (c'est-à-dire, une version Texte, une version HTML, et un certain nombre d'images), nous devons également enregistrer les images accompagnant chaque E-Mail.

Le code SQL que nous avons écrit pour créer cette base de données est présenté au Listing 1.

Listing 1 : create_database_mailing_lists.sql - Le programme permettant de créer la base de données "listes_de_diffusion".

Nous redonnons l'aperçu du Mailing lists ainsi que le téléchargement des fichiers ci-après :

Pour visualiser l'aperçu, en cliquant ici. [Exemple 1-bis].

Pour télécharger les fichiers, en cliquant ici. Au format Zip

Vous devrez naturellement saisir le mot de passe "root". Vous pouvez bien sûr exécuter ce script sous le nom de n'importe quel utilisateur MySQL possédant les privilèges appropriés. Nous nous sommes servi du compte root pour des raisons de simplicité. Il convient également de modifier le mot de passe de l'utilisateur "listes_de_diffusion" et de l'administrateur dans votre script avant de l'exécuter.

Certains champs de cette base de données méritent quelques explications que nous allons voir maintenant.

Le tableau lists contient des identificateurs et des noms de listes, dans les colonnes listid et listname. Il contient aussi une colonne blurb, correspondant à la description de chaque liste.

Le tableau subscribers contient l'adresse E-Mail (email) et le nom (realname) des abonnés. Il contient leur mot de passe (password) et une option (admin) qui indique si l'utilisateur est un administrateur ou non (1 = administrateur et 0 = utilisateur classique). Il contient le format des bulletins à envoyer (mimetype). Cette colonne peut contenir H pour des bulletins en HTML, ou T pour des bulletins en texte brut.

Le tableau sub_lists contient l'adresse E-Mail (email) du tableau subscribers et les identificateurs de liste listid du tableau lists.

Le tableau mail contient des informations sur chaque message E-Mail envoyé par le système. Il enregistre un identificateur unique (mailid), l'adresse à partir de laquelle le message E-Mail a été envoyé (email), la ligne de sujet de l'E-Mail (subject), et l'identificateur listid de la liste à laquelle il a été envoyé ou doit être envoyé. Le contenu du message, en Texte ou en HTML, peut être un fichier assez volumineux, c'est pourquoi nous enregistrons l'archive des messages, en dehors de la bae de données. Nous conserverons également certaines informations générales : si le message a été envoyé (status), à quel moment il a été envoyé (sent) et la date de la dernière modification de cet enregistrement (modified).

Pour terminer, nous utilisons le tableau images pour conserver une trace des images associées aux messages HTML. Une fois encore, ces images peuvent être assez volumineuses, c'est pourquoi nous les enregistrons, en dehors de la base de données. Cependant, nous conservons l'identificateur du messsage (mailid) auquel elle est associée, l'emplacement path où cette image est enregistrée, et le type MIME de l'image (mimetype), par exemple image/gif.

Architecture du script :

Comme pour le projet précédent, nous avons choisi une approche par événements pour ce projet. Le cœur de l'application se trouve dans le fichier index.php. Ce script est composé de quatre parties principales :

  1. Le prétraitement effectue tous les traitements nécessaires avant d'envoyer les en-têtes.

  2. L'installation et envoie des en-têtes crée et envoie le début de la page HTML.

  3. L'exécution de l'action répond à l'événement reçu. Comme dans l'exemple précédent, l'événement se trouve dans la variable $action.

  4. L'envoi des pieds de pages.

L'essentiel du traitement est effectué dans ce fichier. L'application se sert également des bibliothèques de fonctions présentées au tableau 1, comme nous l'avons vu précédemment.

Le code source complet du script index.php se trouve au Listing 2.

Listing 2 : index.php - Le programme principal de "Pyramide - Listes de Diffusion".

Vous pouvez voir que les quatre parties de ce script sont clairement délimitées dans le listing ainsi que les commentaires qui permettent d'expliquer le bon fonctionnement de certaines fonctions et autres.

Dans la phase de prétraitement, nous configurons la session et traitons toutes les actions qui doivent être effectuées avant d'envoyer les en-têtes, c'est-à-dire les ouvertures et les fermetures de sessions.

Dans la phase d'en-tête, nous configurons les boutons du menu dont l'utilisateur pourra se servir, et nous affichons les en-têtes appropriés à l'aide de la fonction do_html_header() de output_fns.php. Cette fonction se contente d'afficher la barre d'en-tête et les menus, c'est pourquoi nous ne l'étudierons pas plus en détail.

Dans la section principale du script, nous réagissons à l'action sélectionnée par l'utilisateur. Ces actions sont regoupées en trois ensembles : les actions qui peuvent être effectuées si l'utilisateur n'est pas loggé, les actions qui peuvent être exécutées par des utilisateurs classiques, et les actions réservées aux administrateurs. Nous vérifions si nous pouvons accéder aux deux derniers ensembles d'actions avec les fonctions check_logged_in() et check_admin_user(). Ces fonctions se trouvent dans la bibliothèque de fonctions user_auth_fns.php. Le code de ces fonctions et celui de la fonction check_normal_user() se trouvent au Listing 3.

Listing 3 : Les fonctions de user_auth_fns.php - Ces fonctions vérifient si un utilisateur est loggé, et à quel niveau.


Comme vous pouvez le constater, ces fonctions se servent des variables de session $normal_user et $admin_user pour vérifier si un utilisateur est loggé. Nous reviendrons sur la définition de ces variables de session dans un instant.

Dans la dernière section de ce script, nous envoyons un pied de page HTML avec la fonction do_html_footer() de output_fns.php.

Examinons rapidement les différentes actions possibles dans notre système. Ces actions sont présentées dans le tableau 2.

Vous remarquerez qu'il manque une option permettant de télécharger les bulletins saisis par les administrateurs avec create-mail. En fait, cette fonctionnalité se trouve dans un autre fichier, upload.php. Nous l'avons placée dans un autre fichier parce que cela nous permet de conserver une trace des problèmes de sécurité.


Tableau 2. - Les actions possibles du gestionnaire de mailing lists : 
Action Utilisable par Description
log-in N'importe qui Affiche un formulaire de login.
log-out N'importe qui Ferme une session.
new-account N'importe qui Crée un nouveau compte pour un utilisateur.
store-account N'importe qui Enregistre les informations du compte dans la base de données.
show-all-lists N'importe qui Affiche la liste des mailing lists disponibles.
show-archive N'importe qui Affiche les bulletins archivés d'une liste particulière.
information N'importe qui Affiche les informations générales d'une liste.
account-settings Les utilisateurs loggés Affiche les paramètres d'un compte d'utilisateur.
show-other-lists Les utilisateurs loggés Affiche les mailing lists auxquelles l'utilisateur n'est pas abonné.
show-my-lists Les utilisateurs loggés Affiche les mailing lists auxquelles l'utilisateur est abonné.
subscribe Les utilisateurs loggés Abonne un utilisateur à une mailing list.
unsubscribe Les utilisateurs loggés Annule l'inscription d'un utilisateur à une mailing list.
change-password Les utilisateurs loggés Affiche le formulaire de modification de mot de passe.
store-change-password Les utilisateurs loggés Met à jour le mot de passe d'un utilisateur.
create-mail Les administrateurs Affiche un formulaire permettant de télécharger des bulletins.
create-list Les administrateurs Affiche un formulaire pour créer de nouvelles mailing lists.
store-list Les administrateurs Enregistre les détails d'une mailing list dans la base de données.
view-mail Les administrateurs Affiche les bulletins qui ont été téléchargés, mais pas envoyés.
send Les administrateurs Envoie les bulletins aux abonnés.

Dans le troisième chapitre, nous allons maintenant voir comment implémenter les actions des trois groupes présentés au Tableau 2, c'est-à-dire : les actions qui peuvent être effectuées par n'importe qui, les actions réservées aux utilisateurs loggés, et les actions réservées aux administrateurs.

Nous terminons ainsi ce deuxième chapitre de cette leçon, et nous verrons dans le prochain, l'Implémentation du login, Création d'un nouveau compte, etc.










Nombre de pages vues, à partir de cette date : le 23 MAI 2019

compteur de visite

    




Envoyez un courrier électronique à Administrateur Web Société pour toute question ou remarque concernant ce site Web. 

Version du site : 10. 5. 14 - Site optimisation 1280 x 1024 pixels - Faculté de Nanterre - Dernière modification : 19 MAI 2019.   

Ce site Web a été Créé le, 14 Mars 1999 et ayant Rénové, en MAI 2019.