Vous êtes sur la page 1sur 85

Universit Montpellier II Anne Universitaire

Institut Universitaire de Technologie 2005/2006


Dpartement Informatique
Seconde Anne

Rapport de stage dvelopp en PHP/MySQL

Prsent et soutenu par Prpar sous la direction de


Sandrine BUENDIA Madame. BAILLEUL
Universit Montpellier II Anne Universitaire
Institut Universitaire de Technologie 2005/2006
Dpartement Informatique
Seconde Anne

Rapport de stage dvelopp en PHP/MySQL

Prsent et soutenu par Prpar sous la direction de


Sandrine BUENDIA Madame. BAILLEUL
Sandrine BUENDIA Remerciements

Remerciements

Je tiens remercier toutes les personnes qui ont contribu au bon droulement de
mon stage, et notamment Madame BAILLEUL, ma tutrice, pour mavoir accueillie
et permis de travailler au sein de son entreprise, ainsi que Monsieur BAILLEUL,
pour leurs remarques et les conseils quils mont fourni pour la bonne ralisation
de ce projet.

Je souhaite aussi remercier tous les internautes qui mont permis de rsoudre
certains problmes que jai rencontr lors de la ralisation du site Internet, en
mapportant leur aide.
Sandrine BUENDIA Glossaire

Glossaire

Apache : Serveur Web gratuit fonctionnant sous Linux et Windows NT. Il permet,
entre autre, linterprtation du langage PHP.

CNIL : La Commission Nationale de l'Informatique et des Liberts est une


institution franaise charge de veiller la protection des donnes personnelles.
Cre par la loi n 78-17 du 6 janvier 1978 relative l'informatique, aux fichiers et
aux liberts, la CNIL est une autorit administrative indpendante.

HTML : Abrviation de l'anglais Hyper Text Markup Language, langage


informatique cr et utilis pour crire les pages Web. HTML permet, en
particulier, d'insrer des hyperliens dans du texte, donc de crer de l'hypertexte,
d'o le nom du langage.

MySQL : Systme de gestion de base de donnes souvent utilis en


complmentarit du PHP.

PHP : Langage de programmation pour des applications sur le web. PHP est un
langage de script excut ct serveur. Langage labor inclut dans une page
HTML qui permet une interaction avec lutilisateur. Technologie permettant la
cration de pages web au contenu dynamique.

Requte : Dans une base de donnes, une requte offre la possibilit de


rechercher des donnes en spcifiant des critres.

SGBD : La gestion et l'accs une base de donnes sont assurs par un


ensemble de programmes qui constituent le Systme de Gestion de Base de
Donnes (SGBD).

UML : (Unified Modeling Language/Langage unifi pour la modlisation). C'est un


langage graphique qui permet de reprsenter, de manire claire et prcise, sous
forme de modle objet, la structure et le comportement des processus. En tant
que tel, il facilite la cration et la comprhension des logiciels actuels.

XML : Extensible Markup Language est un standard du World Wide Web


Consortium qui sert de base pour crer des langages baliss spcialiss; c'est un
mta langage .

World Wide Web Consortium : Le World Wide Web Consortium, abrg W3C,
est un consortium fond en octobre 1994 pour promouvoir la compatibilit des
technologies du World Wide Web telles que HTML, XHTML, XML, CSS, PNG,
SVG et SOAP. Le W3C n'met pas de normes, mais des recommandations.
Sandrine BUENDIA Sommaire

Sommaire
Pages
1. Introduction .. 7

2. Matriels et mthodes ... 8 17

2.1. Cahier des charges . 8

2.2. Fonctionnalits du site 9 10

2.3. Analyse .. 11 13

2.3.1. La partie utilisateur . 11


2.3.2. La partie administrateur . 12
2.3.3. Le choix des langages 13

2.4. Mthode . 14 15

2.5. Synthse 16 17

3. Rsultats ... 18 23

3.1. Partie utilisateur 18 20

3.2. Partie administrateur ... 21 23

4. Discussion 24

5. Conclusion ... 25

6. Annexes 26 84

6.1. Rfrences 26

6.2. Annexes techniques 27 84

6.2.1. Dossier danalyse 27 34


6.2.2. Dossier de programmation 35 84
Sandrine BUENDIA Introduction

1. Introduction

En fin de seconde anne, les tudiants du dpartement informatique de lIUT de


Montpellier doivent effectuer un stage en entreprise. Celui-ci est trs important
avant lattribution du diplme de fin dtudes, car il permet ltudiant de connatre
ce que reprsente le travail en entreprise, mais aussi dappliquer les
connaissances acquises au cours du cursus universitaire.

Le travail que jai effectu lors de ce stage consistait raliser le site Internet de
lentreprise Lantre du dragon . La principale activit de cette entreprise est la
vente darticles de jeux, de statuettes, de livres, Mais le magasin organise
galement des vnements tels que des concours de peinture de figurines, des
tournois,... Le site permettra donc au magasin de prsenter ces vnements, mais
aussi les articles quil propose, les nouveauts,

Je vais donc dvelopper, tout au long de ce rapport, les diffrentes tapes de mon
travail. Tout dabord, je vais dcrire le cahier des charges, afin dexaminer les
attentes de ma tutrice, puis jexpliquerai les mthodes utilises. Ensuite je
prsenterai le rsultat obtenu en concordance avec le cahier des charges. Pour
finir, la dernire partie de ce rapport sera consacre au bilan du stage. Je
raliserai, dans celle-ci, une discussion afin danalyser les points forts et les points
faibles du travail effectu, avant de conclure le rapport.
Sandrine BUENDIA Matriels et mthodes

2. Matriels et mthodes

2.1. Cahier des charges

Le but de mon stage tant de raliser le site Internet de Lantre du dragon , il


fallait donc, au dbut de celui-ci, dfinir les points essentiels de mon travail, ainsi
que ses limites. Tout cela sera donc regroup dans le cahier des charges, en
fonction des attentes de ma tutrice.

Le site sadresse aux personnes connaissant dj le magasin, mais aussi celles


souhaitant le dcouvrir. Ces personnes vont donc pouvoir consulter les
vnements, les nouveauts, le catalogue du magasin, Pour que laffichage
des informations dsires par les visiteurs corresponde leurs attentes, il faut que
le site soit dynamique et que laffichage se fasse en fonction de leurs demandes.

De plus, pour faciliter la navigation dans le site et la recherche dinformations, un


moteur de recherche interne doit tre toujours prsent lcran, pour qu
nimporte quel moment le visiteur puisse effectuer une recherche et trouver trs
rapidement linformation quil dsire.

Lun des souhaits de ma tutrice est de permettre aux visiteurs de consulter les
articles du catalogue du magasin, mais aussi deffectuer des rservations. Afin
dviter que nimporte quelle personne puisse effectuer des rservations (tant
donn quil faudra venir rcuprer la commande au magasin), le visiteur sera
oblig de sinscrire sur le site, et donc de devenir un membre. Il va ainsi falloir
prvoir une partie rserve aux membres, dans laquelle ils auront accs leurs
informations et pourront y effectuer des modifications.

Un autre objectif essentiel de mon travail est de permettre une mise jour facile
du site Internet. Ainsi, mme si la personne charge de la maintenance du site na
aucune connaissance dans le langage de programmation utilis, elle pourra
mettre jour le site. Elle pourra ainsi ajouter des informations, les modifier ou les
supprimer.

Au niveau de laspect visuel du site, les couleurs ont t adaptes celles du logo
du magasin (le logo tant dj cr). Cest donc le ton violet qui va prdominer
dans lintgralit du site.

La solution retenue pour la structure du site est donc de le diviser en deux


grandes parties : une partie utilisateur , qui sera accessible par tous, et une
partie administrateur , qui permettra la mise jour du site Internet.

Rapport de stage 8
Site Lantre du dragon
Sandrine BUENDIA Matriels et mthodes

2.2. Fonctionnalits du site

On a vu prcdemment que le site Internet de Lantre du dragon allait tre


divis en deux grandes parties : la partie utilisateur destine aux visiteurs et la
partie administrateur rserve la personne charge de mettre jour le site.

La partie utilisateur sera visible et accessible par tous. Elle permettra aux visiteurs
de dcouvrir ou redcouvrir le magasin, de se tenir au courant des vnements et
des nouveauts, mais aussi deffectuer des rservations en ligne. Cependant, un
simple utilisateur ne pourra pas effectuer de rservations, afin dviter les abus. Il
devra donc sinscrire et devenir membre.

La partie administrateur sera, en quelques sortes, cache aux visiteurs. Pour y


accder, il faudra tre inscrit sur le site en tant quadministrateur. Cette partie
permet de mettre jour le site rapidement et facilement, sans que ladministrateur
ait besoin davoir de connaissances particulires en informatique.

Ces deux parties seront, elles-mmes, divises en plusieurs sous-parties et


chacune dentre elles fera appel son propre menu. Par exemple, la partie
nouveauts fera appel au menu des nouveauts, la partie vnements fera appel
au menu des vnements,

Ainsi, grce aux liens prsents dans les menus, les utilisateurs du site auront
accs aux diffrentes fonctionnalits qui leurs sont proposes. Voici les diffrentes
parties du site, accessibles grce au menu :

La partie utilisateur :

- La partie accueil contiendra un descriptif du magasin (horaires douverture,


plan daccs, ). Cest une partie statique.
- La partie news contiendra les nouveauts du magasin. Seules les 10
dernires news sont affiches. Les plus anciennes seront stockes en
archives.
- La partie vnement prsentera les vnements proposs par le magasin.
Comme pour les news, les plus vieux vnements seront archivs. Les
vnements peuvent tre illustrs par un album photos. Les vnements
peuvent tre de plusieurs types : tournois, concours de peinture, concours
de dcors,
- La partie catalogue prsentera certains articles du magasin. Tout le monde
peut les consulter, mais seuls les membres peuvent effectuer une
rservation. Pour devenir membre, le visiteur doit sinscrire sur le site ; Une
fois inscrit, ladministrateur du site doit activer le compte du membre. Si le
compte est activ, le membre peut se connecter et effectuer une
rservation.
- La partie liens contiendra des liens vers dautres sites.
- Les membres, une fois connects, peuvent consulter leurs informations, les
modifier, modifier leur code et supprimer leur compte.

Rapport de stage 9
Site Lantre du dragon
Sandrine BUENDIA Matriels et mthodes

La partie administrateur :

- Une partie du site permettra dactiver le compte des membres ou de refuser


cette activation. En cas de refus, ladministrateur aura la possibilit de
remettre le compte ltat inactif ou de supprimer le membre de la base
de donnes.
- Une partie du site permettra de supprimer un compte actif ou de le
dsactiver.
- Une partie du site permettra de grer les administrateurs : ladministrateur
du site est un membre avec des droits particuliers. Dans cette partie, on
pourra soit supprimer un administrateur, soit en ajouter un.
- Une partie du site permettra de crer des albums photos afin dillustrer les
vnements. On pourra aussi modifier ou supprimer les albums photos
existants.
- Une partie permettra de grer les news : crer, modifier ou supprimer une
news.
- Une partie permettra de grer les vnements : crer, modifier ou
supprimer un vnement.
- Une partie du site permettra de grer le catalogue. On pourra ainsi ajouter
un article ou une catgorie darticle, modifier ou supprimer un article ou une
catgorie darticle.
- Une partie permettra de rcuprer la liste des rservations : cest un fichier
.rtf tlcharger.

Rapport de stage 10
Site Lantre du dragon
Sandrine BUENDIA Matriels et mthodes

2.3. Analyse

2.3.1. La partie utilisateur

Pour rpondre au mieux au cahier des charges et intgrer toutes les


fonctionnalits dsires dans la partie utilisateur du site, jai choisi de diviser le
menu en deux parties : un menu gnral et un menu dtaill. Le menu gnral
contient les grandes parties du site, cest--dire laccueil, les nouveauts, les
vnements, le catalogue et les liens. A chaque partie correspond un menu
dtaill. Par exemple, pour la partie accueil du menu gnral, il correspondra un
menu dtaill dans lequel on aura accs aux horaires douverture, au plan daccs
et aux photos du magasin.

On a vu aussi prcdemment que lutilisateur a la possibilit de sinscrire sur le


site pour effectuer des rservations. Cest grce au lien Sinscrire que les
visiteurs pourront indiquer les informations les concernant. Une fois le formulaire
complt et vrifi, les donnes saisies sont enregistres dans la base de
donnes et le visiteur devient un membre. Une partie doit donc tre rserve aux
membres lorsquils sont connects. Cest la partie Mon compte . Dans cette
partie, les membres pourront consulter leurs informations, les modifier ou les
supprimer.

Afin que les membres puissent saisir leurs donnes personnelles en toute
confiance sur le site Internet, le numro de dclaration du site la CNIL est
indiqu. La CNIL est une institution franaise charge de veiller la protection des
donnes personnelles. Effectuer une dclaration auprs de cet organisme est
obligatoire ds lors que la base de donnes utilise par le site contient des
informations nominatives. Dans notre cas, la base de donnes contient le nom, le
prnom, ladresse e-mail et postale, Cette dclaration est donc ncessaire.

Rapport de stage 11
Site Lantre du dragon
Sandrine BUENDIA Matriels et mthodes

2.3.2. La partie administrateur

Lun des principaux but fix lors de la ralisation du cahier des charges tait de
permettre nimporte quelle personne qui on en a confi la responsabilit, de
mettre jour rapidement et simplement le site. Cest donc au niveau de la partie
administrateur que cela sera possible.

Dans cette partie, il ny a aucune page statique, car chaque lien du menu va
permettre ladministrateur de travailler avec les donnes du site. Il va pouvoir
ainsi saisir des informations, les modifier ou les supprimer.

Dans la partie qui va permettre ladministrateur denregistrer des donnes, je


vais devoir utiliser des formulaires, afin de demander ladministrateur des
informations prcises saisir. De plus, il faut afficher les donnes dj
enregistres, quand ceci est possible, afin dviter ladministrateur de faire des
aller/retour entre la partie qui lui est rserve et la partie utilisateur. Par exemple,
dans la partie qui permet de grer les news, en dessous du formulaire qui sert
ajouter une nouveaut, il y a la liste des news dj enregistres dans la base de
donnes, suivie du lien modifier et du lien supprimer . Ainsi, sur la mme
page, toutes les informations et les oprations concernant les news sont
disponibles.

La dmarche suivre pour le traitement des donnes est trs cadre. Il est
indiqu ladministrateur du site toutes les tapes suivre pour le bon
droulement de chaque opration. Ceci lui permet donc de mettre jour le site
sans difficults. De plus, lors de lenvoi dun formulaire, de nombreuses
vrifications sont effectues afin dviter au maximum les erreurs. Par exemple,
une vrification des champs du formulaire est ralise, cest--dire quil faut
vrifier automatiquement si tous les champs obligatoires sont remplis, si
linformation entre correspond bien linformation qui est attendue (par exemple
on vrifie si ladresse e-mail contient bien le signe @), Si ladministrateur
commet tout de mme une erreur, il a toujours la possibilit de modifier les
informations quil a enregistr dans la base de donnes.

Nous voyons donc que, dans cette partie, il y a de nombreuses pages qui vont
traiter les formulaires, grce des scripts, pour enregistrer les informations qui y
sont inscrites. Il faut donc que le langage qui permet de traiter des scripts et le
langage qui permet de traiter la base de donnes, soient complmentaires : il faut
que le langage de programmation assure une bonne liaison avec la base de
donnes.

Rapport de stage 12
Site Lantre du dragon
Sandrine BUENDIA Matriels et mthodes

2.3.3. Le choix des langages

Il dcoule de cette analyse que le langage le plus appropri pour la


programmation du site, en plus de HTML qui nous servira de base, sera le PHP,
lui-mme combin un systme de gestion de base de donnes, MySQL. Ce sont
les langages que lon utilise le plus souvent pour la programmation des sites
Internet, car ils permettent de rendre les pages Web plus dynamiques.

Tout dabord, le PHP est un langage de programmation qui s'intgre dans les
pages HTML. Il permet, entre autres, de rendre automatiques des tches
rptitives, notamment grce lutilisation de fonctions qui sont en quelques
sortes des petits programmes permettant daccomplir ces tches, et grce la
communication avec une base de donnes (qui contient les informations). Cest,
par exemple, une fonction crite en PHP qui servira afficher lalbum photos
illustrant un vnement, et une requte SQL qui permettra denregistrer les
informations concernant lalbum (nom de lalbum, date de cration, ) dans la
base de donnes.

Pour la saisie dinformations par ladministrateur, par exemple pour


lenregistrement dun nouvel vnement, lutilisation des formulaires HTML et le
traitement de ces formulaires par PHP sera le plus appropri. Le formulaire HTML
permettra dafficher lcran les champs dans lesquels ladministrateur devra
saisir les informations, une fonction PHP permettra deffectuer les vrifications
ncessaires sur les informations saisies, et pour finir, une requte SQL permettra
denregistrer dans la base de donnes le nouvel vnement. Ce principe
sappliquera dans la majeure partie de la partie administrateur, afin de lui
permettre dajouter facilement des informations dans la base de donnes. Cest
donc la combinaison de ces trois langages qui va permettre dalimenter la base de
donnes, mais aussi dy effectuer des modifications ou des suppressions.

De plus, il fallait choisir un langage permettant de manipuler les sessions. Une


session correspond lintervalle de temps compris entre le premier accs par un
utilisateur au site Internet et la clture de toutes les fentres de son navigateur.
Les sessions permettront de stocker les informations concernant le membre
connect, par exemple son pseudo, ses droits, PHP gre trs bien les sessions
et elles sont plus simples utiliser et mettre en oeuvre.

Pour lcriture des pages de code du site Internet, jai choisi, sous les conseils de
Monsieur MAHE, la programmation en deux couches. Cela consiste sparer le
code (HTML et PHP) et les requtes SQL. Ainsi, chaque page du site utilisant des
requtes SQL fera appel au fichier requetes.php qui contiendra toutes les
requtes utilises dans le site.

Rapport de stage 13
Site Lantre du dragon
Sandrine BUENDIA Matriels et mthodes

2.4. Mthode

Avant de crer la base de donnes et davoir un aperu de lensemble du travail


effectuer, il faut raliser une analyse du projet. Aprs en avoir discut avec ma
tutrice, jai choisi la mthode UML pour effectuer cette analyse. Lanalyse se
dcoupe en plusieurs parties : le diagramme de cas dutilisation (voir annexe page
27), le diagramme de classes (voir annexe page 28), les transitions dtats (voir
annexe page 28) et les diagrammes de squences (voir annexes pages 29 34).
Les diagrammes de cas dutilisation et de squence servent reprsenter laspect
dynamique : ils permettent de montrer les interactions entre les objets des
diffrentes classes. Le diagramme de classes permet de reprsenter laspect
statique des structures et numre les diffrentes classes du systme
modliser. Pour finir, le diagramme dtats transitions reprsente le cycle de vie
dun objet dune classe donne.

Voici une description des diffrentes classes reprsentes sur le diagramme de


classes qui nous servira raliser les diffrentes tables de la base de donnes.

Le magasin (pour linstant unique) contient des articles (de 1 plusieurs) et ces
articles sont reprsents par une rfrence, une dsignation, un prix et une
variable stock qui permet de savoir si larticle est en stock ou non.

Un article appartient une seule catgorie (dans une catgorie il peut y avoir
plusieurs articles). Une catgorie est reprsente par un numro, un nom et une
variable information qui contient des informations concernant la catgorie.

Le magasin organise des vnements (de 0 plusieurs). Les vnements sont


reprsents par un numro, un nom, une date de dbut et une date de fin, une
heure de dbut et une heure de fin, une variable nbplace qui contient le
nombre de places disponibles pour lvnement, une variable type qui permet
de dterminer de quel type est lvnement, une variable montant qui contient
le montant du cot dinscription lvnement et une variable info qui contient
des informations concernant cet vnement.

Un vnement peut tre illustr par un album photos (un album au maximum).
Lalbum est reprsent par un numro, un nom de dossier (le nom du dossier
contenant les photos), la date de lvnement et des commentaires.

Un membre est un visiteur particulier (il peut effectuer les mmes actions que le
visiteur, en complment des actions qui lui sont spcifiques) et ladministrateur est
un membre particulier (il peut effectuer les mmes actions que le membre, en plus
des actions qui lui sont spcifiques).

Un membre (et donc un administrateur) peut effectuer une rservation de 0


plusieurs). Une rservation est reprsente par la date de la commande et son
montant.

Rapport de stage 14
Site Lantre du dragon
Sandrine BUENDIA Matriels et mthodes

Une commande est compose darticles (de 1 plusieurs). La quantit dun article
est reprsente par la donne porte quantit contenant le nombre de
produits.

Le diagramme des cas dutilisation permet de voir lensemble des actions


possibles par les diffrents acteurs. Ici, les acteurs sont les visiteurs, les membres
et les administrateurs. Ainsi, le visiteur va pouvoir sinscrire et contacter un
administrateur, le membre va pouvoir demander son code oubli, se connecter,
grer son compte et effectuer une rservation, et ladministrateur va pouvoir grer
les comptes membres, grer les administrateurs, grer les albums photos, grer
les news, grer les vnements et rcuprer la liste des rservations.

Le diagramme de squence reprsente, en quelques sortes, le dtail ou le


droulement de chaque action du diagramme des cas dutilisation. Par exemple,
pour le premier diagramme, sinscrire , le visiteur envoie le formulaire
dinscription complt linterface, linterface envoie la requte la base de
donnes. Les informations sont enregistres au niveau de la base de donnes,
puis un message ok est affich sur le navigateur de lutilisateur et il se retrouve
ainsi connect avec son compte.

Pour finir, les diagrammes de transition dtat reprsentent les diffrents tats
acquis par un objet. Par exemple, au niveau de ltat transition du membre : le
visiteur se connecte au site. Il se connecte avec son login et son code : il devient
un membre si son droit est 1, ou un administrateur si son droit est 2. Il peut
ensuite, soit se dconnecter et il redevient un visiteur, soit supprimer son compte
et il redevient aussi un visiteur.

Il existe galement une table indpendante qui nest pas reprsente dans ces
diagrammes, mais qui est quand mme prsente dans la base de donnes et qui
permet d'enregistrer des informations. Il sagit de la table archives qui sert
stocker les news et leur date de publication.

Rapport de stage 15
Site Lantre du dragon
Sandrine BUENDIA Matriels et mthodes

2.5. Synthse

Le site Internet sera donc divis en deux grandes parties : la partie utilisateur et la
partie administrateur. Voici un schma de synthse qui rsume le fonctionnement
du site :

La partie utilisateur permet tout le monde de consulter les informations


prsentes dans le site. Quand un visiteur consulte une page, comme les archives
des news par exemple, le fait de choisir une date va dclencher lenvoi dune
requte SQL vers la base de donnes. Ceci va permettre un affichage dynamique
et personnalis des informations. Lorsque le visiteur se connecte depuis la partie
utilisateur, il devient un membre et a donc accs lespace mon compte . Cest
partir dici que le membre va pouvoir modifier, consulter ou supprimer ses
informations. Si le membre des droits spciaux, cela signifie que cest un
administrateur. Il a donc accs la partie administration du site. Cest partir de
cet endroit que ladministrateur va pouvoir mettre jour le site Internet : grce
des requtes envoyes la base de donnes, il va pouvoir ajouter, modifier ou
supprimer des informations.

Rapport de stage 16
Site Lantre du dragon
Sandrine BUENDIA Matriels et mthodes

Nous avons vu ensuite que cest la combinaison des langages HTML, PHP et
MySQL qui va permettre de rendre le site dynamique. Voici un schma
rcapitulant le fonctionnement de la combinaison de ces trois langages :

Le client reprsente votre ordinateur. Lorsquon entre ladresse du site Internet


(lurl) dans le navigateur, le code de la page est envoy au serveur. Si le serveur
dtecte lutilisation du langage PHP dans le code, il excute ce code. Ensuite, si
des requtes SQL sont aussi prsentes dans le code, elles sont envoyes au
SGBD et le SGBD renvoie les informations voulues (les informations afficher par
exemple). La page de code est ensuite renvoye au serveur, puis au client. La
fentre du navigateur du client affiche donc les informations voulues, en fonction
des requtes SQL et des scripts PHP.

Rapport de stage 17
Site Lantre du dragon
Sandrine BUENDIA Rsultats

3. Rsultats

3.1. Partie utilisateur

On a vu prcdemment que le site est divis en deux grandes parties. La


premire partie est donc la partie utilisateur. Lorsquun visiteur entre ladresse du
site, il arrive sur la page daccueil. Voici un aperu de la structure gnrale du
site (voir annexe page 35):

Sur la gauche du site, un champ est rserv au moteur de recherche. Si le visiteur


recherche une chose prcise sur le site, il lui suffit de saisir dans ce champ le ou
les mots cls de sa recherche et de cliquer sur le bouton ok . Le nombre de
rsultats de la recherche saffiche ensuite dans la partie centrale du site, ainsi que
la liste des rsultats. Un rsultat est, en fait, un rsum du texte dans lequel se
trouve le ou les mots cls et il suffit de cliquer sur ce rsum pour lire lintgralit
du texte.

Sous le moteur de recherche, deux champs permettent aux membres de


sidentifier : le champ login et le champ code. Cest la combinaison de ces deux
champs qui va permettre lidentification du membre : on vrifie que le login indiqu
correspond bien au mot de passe enregistr dans la base de donnes. Si cest le
cas, une session membre est cre et le membre peut naviguer sur le site tout en
restant connect (voir annexe page 39).

Rapport de stage 18
Site Lantre du dragon
Sandrine BUENDIA Rsultats

Avant de devenir membre, le visiteur doit sinscrire sur le site. Cest le lien
sinscrire , se situant sous les champs de connexion, qui va permettre ceci :
lorsque le visiteur clique sur ce lien, un formulaire lui demandant des informations
personnelles saffiche lcran. Ces informations vont permettre ladministrateur
didentifier le membre. Avant de valider linscription, des vrifications sont
effectues. Par exemple, on vrifie que le login saisi nexiste pas dj, que le code
postal contient bien cinq chiffres, Une fois linscription effectue, le membre
pourra, chaque fois quil le souhaite, se connecter au site, en utilisant le login et
le code quil a indiqu (voir annexe page 56).

Si le membre ne parvient pas se connecter, cest peut tre parce quil a oubli
son code. Lors de son inscription sur le site, le membre a indiqu son adresse e-
mail. Donc, en cliquant sur le lien code oubli et en indiquant son login et son
adresse e-mail, un message sera envoy sur ladresse de messagerie
lectronique indique. Un nouveau code, gnr alatoirement, est attribu au
membre et ce message lui indique le nouveau code. Il lui suffira ensuite de se
connecter avec son login et son nouveau mot de passe, puis de le modifier dans
la partie mon compte , sil le dsire. Bien entendu, une vrification est effectue
avant lattribution du nouveau code : il faut vrifier que la combinaison
login/adresse e-mail correspond aux informations enregistres dans la base de
donnes (voir annexe page 62).

Le lien permettant daccder la partie mon compte est accessible une fois
que le membre est connect. Dans cette partie, il aura accs ses informations : il
pourra les consulter, les modifier ou supprimer son compte (voir annexe page 66).

Sous le lien mon compte se trouve le lien permettant au membre de se


dconnecter. Lorsque le membre clique sur ce lien, toutes les informations le
concernant, stockes dans la session, sont dtruites. Cest le cas aussi lorsque la
fentre du navigateur est ferme.

On peut voir ensuite que le menu gnral est divis en cinq parties (accueil, news,
vnements, catalogue et liens) :
La partie accueil permet de prsenter le magasin : on peut y trouver le plan
daccs, les horaires douverture,
Dans la partie news se trouvent les nouveauts, mais cest aussi partir
dici que lon peut avoir accs aux archives : seules les dix dernires news
sont affiches et les plus anciennes sont stockes et accessibles grce la
partie archives . Il suffit dindiquer la date (mois et anne ou simplement
anne) de la news recherche pour avoir la liste des news correspondant
notre recherche.
La partie vnement est similaire : tous les vnements qui nont pas
encore eu lieu sont affichs dans un tableau. Pour avoir plus dinformations,
il suffit de cliquer sur le lien Info + . Une partie archives est aussi
disponible et permet de consulter les vnements qui se sont dj
drouls. Cest aussi comme cela que lon pourra avoir accs aux albums
photos : un album photos illustre un vnement qui sest dj droul en
gnral, et si lalbum existe, un lien saffiche dans les informations
complmentaires et permet daccder lalbum.

Rapport de stage 19
Site Lantre du dragon
Sandrine BUENDIA Rsultats

La partie catalogue correspond un aperu des articles disponibles en


magasin, classs par catgories. Il est possible deffectuer des rservations
en ligne partir de cet endroit. Les visiteurs peuvent seulement visualiser
les articles car, comme on la vu prcdemment, ladministrateur prfre
vrifier lidentit des personnes effectuant une rservation afin dviter les
abus. Les visiteurs nauront donc pas accs au panier . Donc lorsquun
membre souhaite effectuer une rservation, il a accs la liste des articles,
ainsi que leur dtail, mais en plus un champ quantit qui permet
dajouter les articles au panier. Le panier reprsente lensemble des articles
que le membre souhaite rserver. Une fois quil a fini de parcourir le
catalogue et quil souhaite valider sa rservation, il lui suffit de cliquer sur le
bouton envoyer la rservation . Ce bouton va en fait dclencher un
script : un fichier commande.rtf va regrouper toutes les rservations. Donc
lorsque le membre clique, une fonction PHP ouvre le fichier, enregistre la
rservation la fin du fichier, puis referme le fichier. La commande est
ensuite enregistre dans la base de donnes et le total de la rservation,
ainsi que son numro, sont indiqus au membre (voir annexe pages 41 et
45).

La partie lien contient simplement des liens vers diffrents sites et forums.

Pour finir, tout en bas du site se trouvent trois liens : le premier permet denvoyer
un message au responsable du site, le second permet de voir la liste des
partenaires et le dernier le plan du site.

Les administrateurs sont des membres particuliers : ils ont des droits
supplmentaires qui leur permettent davoir accs au lien administration . Cest
partir de cet endroit que ladministrateur va pouvoir maintenir le site jour et y
effectuer des modifications.

Rapport de stage 20
Site Lantre du dragon
Sandrine BUENDIA Rsultats

3.2. Partie administrateur

Sous le lien mon compte , ladministrateur a en plus accs au lien


administration qui le conduit une partie lui permettant de mettre jour
facilement et rapidement le site :

Voici la liste, ainsi quun descriptif, des oprations possibles depuis cette partie :

Dans la partie Activer les comptes , on peut trouver la liste des comptes
membres inactifs (ceux qui viennent de sinscrire sur le site et dont lactivation na
pas encore t effectue par un administrateur). Il suffit de cliquer sur le pseudo
du membre pour avoir plus dinformations sur son compte, notamment ses
coordonnes. Ici, deux choix soffrent ladministrateur : il peut, soit activer le
compte, soit refuser lactivation. Dans le cas o ladministrateur refuse lactivation,
le pseudo du membre passe dans la liste des comptes dont lactivation a t
refuse. Si une activation est refuse, ladministrateur peut toujours rintgrer le
compte dans la liste des comptes non activs ou peut supprimer le compte du
membre. Dans ce dernier cas, toutes les informations concernant ce membre sont
effaces de la base de donnes.

Rapport de stage 21
Site Lantre du dragon
Sandrine BUENDIA Rsultats

Ensuite, dans la partie supprimer un membre , cest la liste des comptes actifs
qui saffiche. Ladministrateur peut, soit supprimer un compte membre, soit le
dsactiver. Dans le cas o ladministrateur dsactive un compte membre, on
considre que lactivation du compte a t refuse (le pseudo passe donc dans la
page Activer les comptes ). Il y a donc trois statuts possibles pour le compte
dun membre : actif, inactif et refus.

Cest dans la partie grer les administrateurs que les comptes administrateur
sont grs. La liste des administrateurs du site est affiche au dbut de la page. Il
y a ensuite deux formulaires : le premier sert ajouter un administrateur, en
indiquant son pseudo et son mot de passe, et le second permet den supprimer
un, en indiquant son pseudo. Il doit tout de mme y avoir au moins un
administrateur sur le site. Cest dire que sil ne reste quun seul compte
administrateur, on est oblig den crer un nouveau avant de le supprimer.

La partie album photos va permettre de crer des albums photos afin dillustrer
des vnements. Lalbum est donc obligatoirement li un vnement et cest le
nom de lvnement qui va dterminer le nom du dossier qui va contenir la photo.
De plus, on peut ajouter des photos ou supprimer un album dj cr.

La partie grer les news permet ladministrateur dajouter, de modifier ou de


supprimer une news. Pour ajouter une news, il suffit dindiquer le titre et le corps
de la news. La date de la news est la date du jour (voir annexe page 73, 76 et 78).

Rapport de stage 22
Site Lantre du dragon
Sandrine BUENDIA Rsultats

Ensuite, dans la partie grer les vnements , ladministrateur peut ajouter un


vnement, grce un formulaire dans lequel il faut indiquer la date, lheure, le
type dvnement, Il peut aussi supprimer ou modifier un vnement. Dans le
cas de la modification, le formulaire dvnement est dj pr-rempli avec les
informations enregistres dans la base de donnes, et il suffit ladministrateur de
modifier linformation quil souhaite, puis de valider .

Dans la partie grer le catalogue, plusieurs possibilits soffrent


ladministrateur. Tout dabord, au niveau des catgories, ladministrateur peut
ajouter, modifier ou supprimer une catgorie. Au niveau des articles,
ladministrateur peut ajouter un article en remplissant un formulaire. Pour modifier
ou supprimer un article, il suffit de choisir la catgorie dans laquelle se situe
larticle puis de choisir celui que lon dsire modifier ou supprimer.

Pour finir, la partie liste des rservations permet de rcuprer la liste des
rservations effectues par les membres. Pour cela, il suffit que ladministrateur
tlcharge le fichier commande.rtf et lenregistre sur son ordinateur. Une fois
que le fichier est tlcharg, il est rinitialis, cest--dire que la liste des
rservations est efface et que le fichier ne contiendra que le titre de la page,
jusqu' ce quun membre effectue une nouvelle rservation (voir annexe page 71).

Rapport de stage 23
Site Lantre du dragon
Sandrine BUENDIA Discussions

4. Discussions
Tout d'abord, l'utilisation des langages PHP et SQL a permis de raliser un site
dynamique et interactif pour les visiteurs. Ainsi, l'utilisateur trouve facilement et
rapidement linformation qu'il recherche. De plus, le site est facile mettre jour :
n'importe quelle personne ayant les droits d'accs la partie administrateur peut
effectuer des modifications sur les donnes et ainsi maintenir jour les
informations du site, sans pour autant avoir des connaissances particulires en
informatique.

Ensuite, le fait de mettre en ligne, et donc de tester le site Internet, quelques


semaines avant la fin du stage ma permis de constater et de rgler quelques
problmes, notamment des problmes daffichage. Par exemple, il a fallu
redimensionner les illustrations des articles du catalogue, rajouter des
informations, Nous avons ainsi, mes tuteurs et moi-mme, eu loccasion de
tester le site et jai pu leur expliquer son fonctionnement, ainsi que celui de la base
de donnes et de PHPMyAdmin. Les visiteurs et les premiers membres inscrits
ont, eux aussi, pu tester le site et nous faire part de leurs commentaires. On a
ainsi pu constater, par exemple, quil fallait rduire la qualit et la taille des photos
des albums photos, afin que le temps de chargement de la page ne soit pas trop
long.

Dans le futur, le site pourra tre dvelopp davantage au niveau de la gestion des
vnements : pour linstant, les vnements ne sont pas assez nombreux pour
quil y ait conflit entre leur date de droulement, mais si, dans quelques temps,
ceux-ci savraient plus nombreux, il sera intressant de dvelopper une
application capable de grer le calendrier des vnements. Par exemple, les
diverses associations pourraient proposer leurs vnements la date quils
dsirent, et les membres pourraient indiquer si la date leur convient. Les
associations pourraient ainsi vrifier sil ny a pas de conflit de date, mais aussi
prvoir laffluence des visiteurs en fonction des ractions des membres.

Rapport de stage 24
Site Lantre du dragon
Sandrine BUENDIA Conclusion

5. Conclusion

Ce stage de fin dtudes, effectu au sein de lentreprise Lantre du dragon ,


ma permis davoir un aperu de ce quest la vie professionnelle, avec toutes les
contraintes et les limites imposes dans le travail accomplir.

Ce projet ma beaucoup intress, car la ralisation dun site Internet en PHP et


SQL ma permis de dvelopper mes connaissances dans ces langages de
programmation, qui me serviront plus tard dans ma vie professionnelle, du fait que
je souhaite poursuivre mes tudes dans ce domaine.

Le site Internet ralis rpond aux exigences exprimes par ma tutrice, savoir
un site permettant de faire connatre le magasin sur Internet et permettant aux
Internautes de prendre connaissance des nouveauts et des vnements
organiss. De plus, le site est facile mettre jour et ladministrateur na pas
besoin davoir des connaissances particulires dans le langage de programmation
utilis pour traiter les informations.

Rapport de stage 25
Site Lantre du dragon
Sandrine BUENDIA Annexes

6. Annexes

6.1. Rfrences

Sites Internet :

Le site de PHP dbutant disponible sur :


www.phpdebutant.com

Le site du ZRo disponible sur :


www.siteduzero.com/index.php

Le manuel PHP disponible sur :


www.manuelphp.com/

Le site et le forum de developpez.com disponible sur :


www.developpez.com

Imprim :

PHP pour les dbutants : comptences micro - initiation

Rapport de stage 26
Site Lantre du dragon
Sandrine BUENDIA Annexes

6.2. Annexes techniques

6.2.1. Dossier danalyse UML

Diagramme de cas dutilisation

Rapport de stage 27
Site Lantre du dragon
Sandrine BUENDIA Annexes

Diagramme de classes

Diagramme dtats transitions

Rapport de stage 28
Site Lantre du dragon
Sandrine BUENDIA Annexes

Diagrammes de squences

(dans le cas o lopration effectue se droule comme prvu)

Sinscrire

Code oubli

Se connecter

Rapport de stage 29
Site Lantre du dragon
Sandrine BUENDIA Annexes

Grer son compte

Rapport de stage 30
Site Lantre du dragon
Sandrine BUENDIA Annexes

Effectuer une rservation

Grer les comptes membres

Rapport de stage 31
Site Lantre du dragon
Sandrine BUENDIA Annexes

Grer les administrateurs

Grer les albums photos

Rapport de stage 32
Site Lantre du dragon
Sandrine BUENDIA Annexes

Grer les news

Grer les vnements

Rapport de stage 33
Site Lantre du dragon
Sandrine BUENDIA Annexes

Rcuprer la liste des rservations

Rapport de stage 34
Site Lantre du dragon
Sandrine BUENDIA Annexes

6.2.2. Dossier de programmation

Fichier antre.php :

<?php
// Dmarrage d'une session utilisateur
session_start();

// Appel de la page fonction pour utiliser les include()


include("fonction/fonction.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>L'Antre du Dragon</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<META NAME="description" CONTENT="L'antre du dragon">
<META NAME="keywords" CONTENT="warhammer, figurine, warhammer 40000,
seigneur des anneaux, antre, dragon">
<!-- Appel de la feuille de style -->
<link rel="stylesheet" href="style.css" type="text/css" />
</head>

<body>
<!-- Partie contenant l'intgralit du site-->
<div id="global">

<!-- Partie contenant le logo -->


<div id="logo">
</div>

<!-- Partie contenant la bannire -->


<div id="entete">
</div>

<!-- Partie contenant le menu gnral -->


<div id="menuge">
<!-- Champs du moteur de recherche interne du site -->
<table class="cadre">
<tr valign="top">
<form action="antre.php?page=moteur" method="post">
<td class="cadre"></td><td width="175" class="cadre">
Recherche : <input type="text" name="recherche" size="10" /></td>
<td width="50" class="cadre"><input type="image"
src="images/bouton2.gif" /></td>
</form>

Rapport de stage 35
Site Lantre du dragon
Sandrine BUENDIA Annexes

<!-- Images du menu gnral -->


<td class="cadre"><a href="antre.php?page=accueil"><img
src="images/blanc4.gif" /></a></td>
<td width="15" class="cadre"></td><td class="cadre"><a
href="antre.php?page=news"><img src="images/blanc4.gif" /></a></td>
<td width="15" class="cadre"></td><td class="cadre"><a
href="antre.php?page=evenements"><img src="images/blanc4.gif" /></a></td>
<td width="15" class="cadre"></td><td class="cadre"><a
href="antre.php?page=categorie"><img src="images/blanc4.gif" /></a></td>
<td width="15" class="cadre"></td><td class="cadre"><a
href="antre.php?page=liens"><img src="images/blanc4.gif" /></a></td>
</tr>
</table>
</div>

<!-- Partie contenant le menu dtaill -->


<div id="menu">
<?php
// Vrification de la personne connecte (ses droits et son pseudo)
if(isset($_SESSION['droit'])) $droit = $_SESSION['droit'];
else $droit = 0;
if(isset($_SESSION['pseudo'])) $pseudo = $_SESSION['pseudo'];
else $pseudo = '';
// Si le droit est diffrent de 0, c'est un membre ou un admin connect, donc
affichage du pseudo
if ($droit!=0)
{
?>
<table class="cadre">
<tr><td class="cadre"></td>
<td class="cadre">Vous tes connect en tant</td></tr>
<tr><td class="cadre"></td>
<td class="cadre">que <font color="#CCCCFF"><?php echo
$pseudo; ?></font><br /><br /></td></tr>
<tr><td class="cadre"></td>
<td class="cadre"><font size="-1"><a
href="antre.php?page=compte"><u>Mon compte</u></a></font></td></tr>
<?php
// Si le droit est gale 2, c'est un administrateur
if ($droit==2)
{
?>
<tr><td class="cadre"></td>
<td class="cadre"><font size="-1"><a
href="antre.php?page=admin"><u>Administration</u></a></font></td></tr>
<?php
}
?>
<tr><td class="cadre"></td>

Rapport de stage 36
Site Lantre du dragon
Sandrine BUENDIA Annexes

<td class="cadre"><font size="-1"><a


href="antre.php?page=logout"><u>Dconnexion</u></a></font><br /><br /></td></tr>
</table>
<?php
}
// Si le droit est gale 0, c'est un utilisateur non connect donc affichage
des champs de connection
if ($droit==0)
{
?>
<table class="cadre">
<form method="post" action="antre.php?page=login">
<tr><td height="5" class="cadre"></td></tr>
<tr>
<td class="cadre" width="5"></td>
<td class="cadre" height="10">Login : </td><td class="cadre"
colspan="3"><input type="text" name="login" size="10" /></td>
</tr><tr>
<td class="cadre" width="5"></td>
<td class="cadre" valign="top">Code : </td><td
class="cadre"><input type="password" name="mdp" size="10" /></td>
<td class="cadre" width="5"></td>
<td class="cadre">
<?php $position=$_GET['page']; ?>
<input type="hidden" name="position" value="<?php echo
$position; ?>" />
<input type="image" src="images/boutonok2.gif" /></td>
</tr>
</form>
</table>
<table class="cadre">
<tr><td class="cadre" width="5"></td>
<td class="cadre"><a href="antre.php?page=inscription"><font
size="-1"><u>S'inscrire</u></font></a></td>
</tr>
<tr><td class="cadre" width="5"></td>
<td class="cadre"><a href="antre.php?page=oubliemdp"><font
size="-1"><u>Code oubli ?</u></font></a></td>
</tr>

</table>
<br />
<?php
}
// Menu dtaill correspondant au menu gnnral slectionn
include($menu);
?>
</div>

Rapport de stage 37
Site Lantre du dragon
Sandrine BUENDIA Annexes

<!-- Partie contenant l'information -->


<div id="contenu">
<table class="cadre">
<tr><td colspan="2" height="10" class="cadre"></td></tr>
<tr><td height="10" width="10" class="cadre"></td>
<td width="747" class="cadre">
<?php
// Page contenant l'information
include($page);
?>
</td>
</tr>
</table>
</div>

<!-- Partie contenant le pied de page -->


<div id="siteInfo">
<center>
<table class="cadre">
<tr>
<td class="cadre" height="15"></td>
</tr>
</table>
<a href="antre.php?page=contact">Contact</a> |
<a href="antre.php?page=partenariat">Partenariat</a> |
<a href="antre.php?page=plansite">Plan du site</a><br />
&copy;L'antre du dragon
</center>
</div>

</div>
</body>
</html>

Rapport de stage 38
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier login.php :

<?php
// Appel de la page fonction pour utiliser la connexion et la deconnexion la base de
donnes
require('./fonction/fonctionsUtiles.php');

// On part du principe que le login est faux. Il passe vrai si le login est confirm
$loginOK = false;

// Test pour vrifi que tous les champs sont remplis


if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['mdp'])) )
{
extract($_POST);
// Decryptage du mot de passe
$mdp = md5($mdp);

require('./fonction/requete.php');

// Connexion la base de donnes


connexion();

// On va chercher le mot de passe affrent ce login


$req = mysql_query($requete10) or die('Erreur SQL : <br />'.$requete10);

// On vrifie que l'utilisateur existe bien


if (mysql_num_rows($req) > 0)
{
$data = mysql_fetch_assoc($req);
// On vrifie que son mot de passe est correct
if ($mdp == $data['mdp'])
{
$loginOK = true;
}
}
// Deconnexion de la base de donnes
deconnexion();
}

// Si le login a t valid on met les donnes en sessions


if ($loginOK)
{
// On rcupre le pseudo et les droits
$_SESSION['pseudo'] = $data['pseudo'];
$_SESSION['droit'] = $data['droit'];

Rapport de stage 39
Site Lantre du dragon
Sandrine BUENDIA Annexes

// On rcupre la page sur laquelle se trouve l'utilisateur avant sa connection


if (isset ($_POST['position'])) $position=$_POST['position'];
else $position='';

// On le redirige vers la mme page mais avec les informations concernant sa


session
echo '<script>window.location.replace("antre.php?page='.$position.'");</script>';
// Si javascript est dsactiv sur le navigateur de l'utilisateur :
?>
<noscript>
Vous tes maintenant connect.
<form action="antre.php?page=<?php echo $position; ?>" method="post">
<input type="submit" value="Continuer" />
</form>
</noscript>
<?php
}
else
{
// Mauvais mot de passe ou champs non remplis
echo '<center><h1>Connexion</h1></center>';
echo 'Une erreur est survenue. <br />Veuillez ressayer ou en cas de problmes,
contacter un administrateur.';
$redir="antre.php?page=accueil";
redirection($redir);
?>
<noscript>
<form action="antre.php?page=accueil" method="post">
<input type="submit" value="Terminer" />
</form>
</noscript>
<?php
}
?>

Rapport de stage 40
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier logout.php :

<?php
// On crase le tableau de session
$_SESSION = array();

// On dtruit la session
session_destroy();

?>
<!-- Redirection vers la page d'accueil -->
<script>window.location.replace("antre.php?page=accueil"); </script>
<!-- Si javascript est dsactiv -->
<noscript>
Vous tes maintenant dconnect.
<form action="antre.php?page=accueil" method="post">
<input type="submit" value="Continuer" />
</form>
</noscript>

Fichier panier.php :

<center><h1>Votre panier</h1></center>
<?php
// Rcupration du pseudo
if(isset($_SESSION['pseudo'])) $pseudo = $_SESSION['pseudo'];
else $pseudo = '';
if(isset($_SESSION['droit'])) $droit = $_SESSION['droit'];
else $droit = 0;

// Si le droit est gale 2, c'est un administrateur, donc autorisation d'afficher la page


if ($droit!=0)
{
// Rcupration de la date
$date = date("d-m-Y");

// Connexion la base
connexion();
$part=2;
require('./fonction/requete.php');
// Envoie de la requete
$result=mysql_query($requete20) or die('Erreur SQL
!<br>'.$requete20.'<br>'.mysql_error());
// Rcupration des donnes
$membre = mysql_fetch_array($result);
$nummembre =$membre['num'];
$part=0;
require('./fonction/requete.php');

Rapport de stage 41
Site Lantre du dragon
Sandrine BUENDIA Annexes

// Envoie de la requete
$result= mysql_query($requete21) or die('Erreur SQL
!<br>'.$requete21.'<br>'.mysql_error());
// Calcul du nombre total de rsultat
$total = mysql_num_rows($result);

if ($total==0)
{
// On recupre l'id du tableau pour la suppression de l'lment
if(isset($_GET['id'])) $id=$_GET['id'];
else $id="";

// Suppression de l'article de la session


if ($id!="")
{
// Rcupration du panier
$panier=$_SESSION['panier'];
$ref=$panier[0];
$quant=$panier[1];

// Tableaux temporaires
$temp1=array();
$temp2=array();
$n=0;
// On parcours le panier
for ($i=0;$i<sizeof($ref);$i++)
{
// Si l'indice est diffrent de l'id de l'article supprimer
if ($i!=$id)
{
// On copie dans un autre tableau
$temp1[$n]=$ref[$i];
$temp2[$n]=$quant[$i];
$n+=1;
}
}
$panier=array($temp1,$temp2); //Nouveau panier
$_SESSION['panier']= $panier; // Mise en session de ce panier
}

// calcul du nombre de produits dans le panier


$nbarticle=0;
$panier=$_SESSION['panier'];
$ref=$panier[0];
$quant=$panier[1];

Rapport de stage 42
Site Lantre du dragon
Sandrine BUENDIA Annexes

// On affiche le panier
for ($i=0;$i<sizeof($ref);$i++)
{
$nbarticle += $quant[$i];
}
echo "<u>Nombre d'articles</u> : ".$nbarticle."<br /><br />";
$total=0.0;
?>
<center>
<table class="cadre">
<tr>
<td valign="top" class="cadre"
width="180"><b><center>Rfrence</center></b></td>
<td valign="top" class="cadre"
width="220"><b><center>Dsignation</center></b></td>
<td valign="top" class="cadre"
width="100"><b><center>Quantit</center></b></td>
<td valign="top" class="cadre" width="80"><b><center>Prix</center><br
/></b></td>
</tr>
<?php
// Connexion la base
connexion();
for ($i=0;$i<sizeof($ref);$i++) // tanqu'il y a des produits dans le panier
faire :
{
$part=1;
require('./fonction/requete.php');
//On envoie la requte
$result= mysql_query($requete22) or die('Erreur SQL
!<br>'.$requete22.'<br>'.mysql_error());
// On rcupere le numero de la categorie
$article = mysql_fetch_array($result);
$designation=$article['designation'];
$prix=$article['prix'];
?>
<tr>
<td class="cadre"><center>
<?php echo $ref[$i]; ?></center></td>
<td class="cadre"><center><?php echo $designation;
?></center></td>
<td class="cadre"><center><?php echo $quant[$i];
?></center></td>
<td class="cadre"><center><?php echo $prix; ?></center></td>
<td class="cadre"><center><a
href="antre.php?page=panier&id=<?php echo $i; ?>"
class="style2">Supprimer</a></center></td></tr>

Rapport de stage 43
Site Lantre du dragon
Sandrine BUENDIA Annexes

<?php
$total+=$prix*$quant[$i];
}
?>
</table>
</center>
<br /><br />
<?php
echo '<b>Total de la rservation : </b>'.$total.' euros';
if ($nbarticle!=0)
{
?>
<center>
<form action="antre.php?page=commande" method="post">
<input type="hidden" name="total" value="<?php echo $total; ?>" />
<input type="submit" value="Envoyer la rservation" />
</form>
</center>
<?php
}
}
else
{
echo "Vous avez dj effectu une rservation aujourd'hui.<br />Vous
pouvez faire une rservation par membre et par jour.";
}
}
// Sinon ce n'est pas un administrateur, donc interdiction d'accder cette page
else
{echo'Vous n\'tes pas connect.';}
?>

Rapport de stage 44
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier commande.php :

<?php
// Rcupration du total de la commande
if(isset($_POST['total'])) $total=$_POST['total'];
else $total="";

// Rcupration du pseudo
if(isset($_SESSION['pseudo'])) $pseudo = $_SESSION['pseudo'];
else $pseudo = '';

// Rcupration de la date
$date = date("d-m-Y");
$part=0;
require('./fonction/requete.php');
// Connexion la base
connexion();
// Envoie de la requete
$result=mysql_query($requete15) or die('Erreur SQL
!<br>'.$requete15.'<br>'.mysql_error());
// Rcupration des donnes
$membre = mysql_fetch_array($result);
$nummembre =$membre['num'];
$part=1;
require('./fonction/requete.php');
// On envoie la requte
mysql_query($requete16) or die('Erreur SQL !<br>'.$requete16.'<br>'.mysql_error());

// Envoie de la requete
$result=mysql_query($requete17) or die('Erreur SQL
!<br>'.$requete17.'<br>'.mysql_error());
// Rcupration des donnes
$commande = mysql_fetch_array($result);
$num =$commande['num'];

//cration et ouverture du fichier sur le serveur :


$page="";
$nom_fichier='./admin/commande.rtf';
$fichier=fopen($nom_fichier, 'r');

// Lecture du fichier RTF


$page = fread($fichier, filesize($nom_fichier));
fclose($fichier);

// On remplace le dernier caractre par une chane vide


$page = substr_replace($page,"",(strlen($page)-2),3);

Rapport de stage 45
Site Lantre du dragon
Sandrine BUENDIA Annexes

//on inscrit le code rtf avec les doubles slashes et les variables dans le fichier :
$page.="\\par
\\ulnone\\b\\fs20 Pseudo : $pseudo \\b0 (Num\\'e9ro membre : $nummembre)\\par
Date r\\'e9servation : $date\\par
Num\\'e9ro r\\'e9servation : $num\\par";
$panier=$_SESSION['panier'];
$ref=$panier[0];
$quant=$panier[1];

// On affiche le panier
for ($i=0;$i<sizeof($ref);$i++)
{
// On rcupre la designation
$req= "SELECT reference,designation FROM article WHERE
reference='$ref[$i]'";
//On envoie la requte
$result= mysql_query($req) or die('Erreur SQL !<br>'.$req.'<br>'.mysql_error());
$article = mysql_fetch_array($result);
$designation=$article['designation'];

$n=$i+1;
$page.="Article $n : $ref[$i] $designation\\par
Quantit\\'e9 : $quant[$i]\\par
";
}
$page.="\\b Total r\\'e9servation : $total euros\\b0\\par
}";
$fichier=fopen($nom_fichier, 'w+');
fwrite($fichier,$page);
//on ferme le fichier
fclose($fichier);
?>
<center><h1>Votre panier</h1></center>
Votre rservation bien t envoye.<br /><br />
<b>Numro de la rservation :</b> <?php echo $num; ?> <br /><br />
<b>Total de la rservation :</b> <?php echo $total; ?> euros

<?php
// On crase le panier (remise zro)
$ref=array();
$quant=array();
$panier=array($ref,$quant);
$_SESSION['panier']= $panier;
?>

<form action="antre.php?page=categorie" method="post">


<input type="submit" value="Terminer" />
</form>

Rapport de stage 46
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier infoevenements.php :

<?php
//Rcupration de l'id
if(isset($_GET['id'])) $id=$_GET['id'];
else $id="";

if (isset($_GET['recherche'])) $recherche=$_GET['recherche'];
else $recherche="";

if(isset($_GET['acces'])) $acces=$_GET['acces'];
else $acces="";

if ($id!="")
{
require('./fonction/fonctionsUtiles.php');
require('./fonction/requete.php');
connexion();
$result= mysql_query($requete26) or die('Erreur SQL
!<br>'.$requete26.'<br>'.mysql_error());

$info = mysql_fetch_array($result);
?>
<center><h1><?php echo $info['nom']; ?></h1></center>
<table class='cadre'>
<tr>
<td class='cadre'>Nom de l'vnement : </td>
<td class='cadre'><em><?php echo $info['nom']; ?></em></td>
</tr>
<tr>
<td class='cadre'>Date de dbut : </td>
<td class='cadre'><em><?php echo $info['datedebut']; ?></em></td>
</tr>
<tr>
<td class='cadre'>Date de fin : </td>
<td class='cadre'><em><?php echo $info['datefin']; ?></em></td>
</tr>
<tr>
<td class='cadre'>Heure de dbut : </td>
<td class='cadre'><em><?php echo $info['heuredebut']; ?></em></td>
</tr>
<tr>
<td class='cadre'>Heure de clture : </td>
<td class='cadre'><em><?php echo $info['heurefin']; ?></em></td>
</tr>
<tr>
<td class='cadre'>Nombre de places : </td>
<td class='cadre'><em><?php echo $info['nbplace']; ?></em></td>
</tr>

Rapport de stage 47
Site Lantre du dragon
Sandrine BUENDIA Annexes

<tr>
<td class='cadre'>Montant inscription : </td>
<td class='cadre'><em><?php echo $info['montant']; ?> euros</em></td>
</tr>
<tr>
<td class='cadre'>Type d'vnement : </td>
<td class='cadre'><em><?php echo $info['type']; ?></em></td>
</tr>
<tr>
<td class='cadre'>Informations : </td>
<td class='cadre'><em><?php echo $info['info']; ?></em></td>
</tr>
</table>
<?php
// Connexion la base
connexion();
$result= mysql_query($requete27) or die('Erreur SQL
!<br>'.$requete27.'<br>'.mysql_error());
$total = mysql_num_rows($result);
switch ($total)
{
// Si un album existe, on crer le lien
case 1 : {
?>
<a href="antre.php?page=affichealbum&id=<?php
echo $id; ?>" class="style2"><br />Afficher l'album photo</a>
<?php
break;
}
}
if ($acces=="a")
{
?>
<form method="post" action="antre.php?page=archiveeven">
<input type="submit" value="Retour" />
</form>
<?php
}
else
{
if ($recherche!="")
{
?>
<form action="antre.php?page=moteur" method="post">
<input type="submit" value="Retour" />
<input type="hidden" name="recherche" value="<? echo
$recherche; ?>" />
</form>

Rapport de stage 48
Site Lantre du dragon
Sandrine BUENDIA Annexes

<?php
}
else
{
?>
<form method="post" action="antre.php?page=evenements">
<input type="submit" value="Retour" />
</form>
<?php
}
}
}
else
{
// On le redirige vers le catalogue
echo '<script>window.location.replace("antre.php?page=evenements");</script>';
// Si javascript est dsactiv sur le navigateur de l'utilisateur :
?>
<noscript>
<form action="antre.php?page=evenements" method="post">
<input type="submit" value="Retour aux vnements" />
</form>
</noscript>
<?php
}
?>

Rapport de stage 49
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier fonctionsUtiles.php :

<?php
// Fonction permettant de se connecter la base de donnes
function connexion ()
{
// On se connecte MySQL
$db = mysql_connect('sql.free.fr', 'dragon.antre', 'saurus34') or die ('Erreur de
connexion'.mysql_error().'<br />');
// On slectionne la base
mysql_select_db('dragon_antre',$db)or die ('Erreur de selection'.mysql_error().'<br
/>');
}

// Fonction permettant de se dconnecter de la base de donnes


function deconnexion ()
{
// On ferme la connexion mysql
mysql_close();
}

// pour verifier si un mail est correct..


function mailValide($mail)
{
if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[\._a-z0-9-]+\.[a-z0-9-]*$",$mail))
{ return (false);}
else {return (true);}
}

// Vrification code postal


function codepostalValide($codepostal)
{
if (!eregi("^[0-9]{5}$",$codepostal))
{ return (false);}
else {return (true);}
}

// Fonction qui retourne vrai si le tableau est vide, faux sinon


function tabVide($tab,$n)
{
$i=0;
$vide=true;
while ($i<=$n && $vide)
{
if ($tab[$i]!="")
{
$vide=false;
}

Rapport de stage 50
Site Lantre du dragon
Sandrine BUENDIA Annexes

$i++;
}
return $vide;
}

// Fonction qui initialise le tableau vide


function initTab($tab,$n)
{
for ($i=0;$i<=$n;$i++)
{
$tab[$i]="";
}
return $tab;
}

// Fonction qui vrifie si le pseudo existe dj. Retourne vrai si il existe, faux sinon
function pseudoExiste ($pseudo)
{
// Connexion
connexion();

$sqlv = "SELECT pseudo FROM membre WHERE pseudo='$pseudo'";


// on envoie la requte
$result = mysql_query($sqlv) or die('Erreur SQL
!<br>'.$sqlv.'<br>'.mysql_error().'<br />');

$nb = mysql_num_rows($result);
switch($nb)
{
case'0' : return false; break;
default : return true;
}
deconnexion();
}

// Cette fonction retourne un mot de passe alatoire


function codeAl()
{
// Le code comprendra 10 20 chiffres
$nb=rand(10,20);
$code="";
// On choisi au hasard les 10 20 chiffres
for ($i=0; $i<=$nb;$i++)
{
$n=rand(0,9);
$code.=$n;
}
return $code;
}

Rapport de stage 51
Site Lantre du dragon
Sandrine BUENDIA Annexes

// fonction d'affichage des informations d'un compte en fonction du pseudo


function afficheInfoCompte($pseudo)
{
$sql=' SELECT * FROM membre WHERE pseudo="'.$pseudo.'"' ;
// requete de slection d'une rando par son $idrando
connexion(); //connection la sgbd
$result = mysql_query($sql) or die('Erreur SQL
!<br>'.$sql.'<br>'.mysql_error().'<br />');

$row = mysql_fetch_array( $result );


?>
<center>
<table class='cadre'>
<tr><td class='cadre' align="center">
<center><h1>Membre : <?php echo $row['pseudo']; ?></h1></center>
</td></tr>
<tr><td class='cadre' align="center">
<table class='cadre'>
<tr>
<td class='cadre'>Login : </td>
<td class='cadre'><em><?php echo $pseudo; ?></em></td>
</tr>
<tr>
<td class='cadre'>Nom : </td>
<td class='cadre'><em><?php echo $row['nom'];; ?></em></td>
</tr>
<tr>
<td class='cadre'>Prnom : </td>
<td class='cadre'><em><?php echo $row['prenom']; ?></em></td>
</tr>
<tr>
<td class='cadre'>Numro de tlphone : </td>
<td class='cadre'><em><?php echo $row['tel']; ?></em></td>
</tr>
<tr>
<td class='cadre' valign="top">Adresse : </td>
<td class='cadre'><em><?php echo $row['rue']; ?><br /><?php echo
$row['cp']." ".$row['ville']; ?></em></td>
</tr>
<tr>
<td class='cadre'>E-mail : </td>
<td class='cadre'><em><?php echo $row['mail']; ?></em></td>
</tr>
<tr>
<td class='cadre'><br /><br /><strong>Le compte est activ :</strong>
</td>

Rapport de stage 52
Site Lantre du dragon
Sandrine BUENDIA Annexes

<td class='cadre'><br /><br /><em><strong><?php echo $row['actif'];


?></strong></em></td>
</tr>
</table>
</td></tr>
</table>
</center>
<?php
deconnexion();
}

// fonction qui permet de rediriger automatiquement l'utilisateur vers la page $redir au baut
de 3 secondes
function redirection($redir)
{
echo "<SCRIPT LANGUAGE='JavaScript'>\n
function redirect()
{\n
window.location='".$redir."'\n
}\n
// delai en millisecondes\n
setTimeout('redirect()',2600);\n
</SCRIPT>\n";
}

// fonction permettant de remplacer le caractre ' par \' afin d'viter les erreur SQl
function formatalbum ($nom)
{
// formatage nom fichier :
// enlever les accents :
$nomdossier =
strtr($nom,'','AAAA
AACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _ :
$nomdossier = preg_replace('/([^.a-z0-9]+)/i', '_', $nomdossier);
return $nomdossier;
}
function afficheAlbum($dir)
{
$dossier = opendir($dir);
$i=0;
echo'<center><table class="cadre">';
while ($Fichier = readdir($dossier))
{
if ($Fichier !="Thumbs.db")
{
if ($Fichier != "." && $Fichier != "..")
{

Rapport de stage 53
Site Lantre du dragon
Sandrine BUENDIA Annexes

if($i%4==0 || $i==0)
{
echo '<tr>';
echo '<td class="cadre">' ;
echo '<a href="'.$dir.$Fichier.'"
target="_blank"><img src="'.$dir.$Fichier.'" width="100" height="75"></a>';
echo '</td>' ;
$i++;
}
elseif($i%4>=1 && $i%4<=3)
{
echo '<td class="cadre">' ;
echo '<a href="'.$dir.$Fichier.'"
target="_blank"><img src="'.$dir.$Fichier.'" width="100" height="75"></a>';
echo '</td>' ;
$i++;
}
elseif ($i!==0 && $i%4==O)
{
echo '<td class="cadre">';
echo '<a href="'.$dir.$Fichier.'"
target="_blank"><img src="'.$dir.$Fichier.'" width="100" height="75"></a>';
echo '</td>';
echo'</tr>';
$i++;
}
}
else echo'</tr>';
}
}
closedir($dossier);
echo '</table></center>';
}

function lirenews($id)
{
// Connexion la base
connexion();
// Slection des 10 dernires news
$req= "SELECT id,date,titre,news FROM archives WHERE id='$id'";
// Envoie de la requete
$result=mysql_query($req) or die('Erreur SQL !<br>'.$req.'<br>'.mysql_error());
?><table class="cadre"><?php
// Affichage de la news
$news = mysql_fetch_array($result);

$date =$news['date'];
$titre =$news['titre'];
$news =$news['news']; ?>

Rapport de stage 54
Site Lantre du dragon
Sandrine BUENDIA Annexes

<tr>
<td class="cadre" width="650"><strong><?php echo $titre; ?></strong></td>
<td class="cadre"><em><?php echo $date; ?></em></td>
</tr>
<tr>
<td colspan="2" class="cadre"><br />
<?php echo $news; ?><br /><br />
</td>
</tr>
</table>
<?php

// Dconnexion de la base
deconnexion();
}

// Permet de tronquer un texte


function tronque($chaine,$max)
{
$chaine=substr($chaine,0,$max);
$espace=strrpos($chaine," ");
$chaine=substr($chaine,0,$espace)."...";
return $chaine;
}
?>

Rapport de stage 55
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier inscription.php :

<?php
// Vrification des droits de la personne connecte (session)
if(isset($_SESSION['droit'])) $droit = $_SESSION['droit'];
else $droit = 0;

// Si le droit est 0, c'est un visiteur, donc autorisation d'afficher la page


if ($droit==0)
{
// On recupre les champs envoys par le formulaire
if(isset($_POST['pseudo'])) $pseudo=$_POST['pseudo'];
else $pseudo="";

if(isset($_POST['mdp1'])) $mdp1=$_POST['mdp1'];
else $mdp1="";

if(isset($_POST['mdp2'])) $mdp2=$_POST['mdp2'];
else $mdp2="";

if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";

if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
else $prenom="";

if(isset($_POST['tel'])) $tel=$_POST['tel'];
else $tel="";

if(isset($_POST['rue'])) $rue=$_POST['rue'];
else $rue="";

if(isset($_POST['cp'])) $cp=$_POST['cp'];
else $cp="";

if(isset($_POST['ville'])) $ville=$_POST['ville'];
else $ville="";

if(isset($_POST['mail'])) $mail=$_POST['mail'];
else $mail="";

if(isset($_POST['prem'])) $prem=$_POST['prem'];
else $prem=true;

$mdp=md5($mdp1);

// Appel de la page contenant les fonctions qui permettent d'effetuer les


modifications

Rapport de stage 56
Site Lantre du dragon
Sandrine BUENDIA Annexes

require('./fonction/fonctionsUtiles.php');
require('./fonction/requete.php');

// Tableau contenant les messages d'erreurs.


$erreur_message = array(0 => 'Champs obligatoire',
1 => 'Adresse Email non valide',
2 => 'Code postal non valide',
3 => 'Les deux codes saisi ne pas les
mmes',
4 => 'Ce pseudo existe dj, veuillez en
choisir un autre');

// Dclaration et initialisation du tableau $erreur


$table[0]="";
$erreur=initTab($table,13);

// Si ce n'est pas le premier affichage du formulaire, on cherche les erreurs


if (!$prem)
{
// Champs obligatoires :
if($pseudo=="")
$erreur[0]="pseudo";

if($mdp1=="")
$erreur[1]="mdp1";

if($mdp2=="")
$erreur[2]="mdp2";

if($nom=="")
$erreur[3]="nom";

if($prenom=="")
$erreur[4]="prenom";

if($tel=="")
$erreur[5]="tel";

if($rue=="")
$erreur[6]="rue";

if($cp=="")
$erreur[7]="cp";

if($ville=="")
$erreur[8]="ville";

if($mail=="")
$erreur[9]="mail";

Rapport de stage 57
Site Lantre du dragon
Sandrine BUENDIA Annexes

// Vrification du mot de passe :


if ($mdp1!=$mdp2)
$erreur[10]="mdp";

// Code postal valide :


if (!codepostalValide($cp))
$erreur[11]="codepostalValide";

// Adresse Email valide :


if ($mail!="" && !mailValide($mail))
$erreur[12]="mailValide";

// Vrification de l'existance du pseudo :


if (pseudoExiste($pseudo))
$erreur[13]="pseudoValide";

}
// On vrifie s'il existe des erreurs (si le tableau erreur est vide ou non)
$estVide=tabVide($erreur,13);
// Affichage du titre
?><center><h1>Inscription</h1></center><?php
// Si il exite des erreurs ou si c'est le premier affichage, on affiche le formulaire
if (!$estVide or $prem==true)
{
?>
Votre inscription sur le site de l'Antre du Dragon vous permettra d'effectuer
des rservations d'articles en ligne.<br />
Le champs e-mail vous permettra de reevoir par courrier lctronique des
informations concenant votre commande.<br />
<form action="antre.php?page=inscription" method="POST">
<table class="cadre">
<tr><td class="cadre" width="15"></td><td class="cadre">Login<font
color="#FF0000">*</font> : </td>
<td class="cadre"><input type="text" name="pseudo" value="<?php echo
$pseudo; ?>" size="30" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[0]=="pseudo") echo $erreur_message[0]; if ($erreur[13]=="pseudoValide") echo
$erreur_message[4]; ?></font></td></tr>

<tr><td class="cadre" width="15"></td><td class="cadre">Code<font


color="#FF0000">*</font> : </td>
<td class="cadre"><input type="password" name="mdp1" value=""
size="30" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[1]=="mdp1") echo $erreur_message[0]; if ($erreur[10]=="mdp") echo
$erreur_message[3]; ?></font></td></tr>

<tr><td class="cadre" width="15"></td><td class="cadre">Code


(vrification)<font color="#FF0000">*</font> : </td>

Rapport de stage 58
Site Lantre du dragon
Sandrine BUENDIA Annexes

<td class="cadre"><input type="password" name="mdp2" value=""


size="30" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[2]=="mdp2") echo $erreur_message[0]; ?></font></td></tr>

<tr><td class="cadre" width="15"></td><td class="cadre">Nom<font


color="#FF0000">*</font> : </td>
<td class="cadre"><input type="text" name="nom" value="<?php echo
$nom; ?>" size="30" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[3]=="nom") echo $erreur_message[0]; ?></font></td></tr>

<tr><td class="cadre" width="15"></td><td class="cadre">Prnom<font


color="#FF0000">*</font> : </td>
<td class="cadre"><input type="text" name="prenom" value="<?php echo
$prenom; ?>" size="30" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[4]=="prenom") echo $erreur_message[0]; ?></font></td></tr>

<tr><td class="cadre" width="15"></td><td class="cadre">Tlphone<font


color="#FF0000">*</font> : </td>
<td class="cadre"><input type="text" name="tel" value="<?php echo $tel;
?>" size="30" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[5]=="tel") echo $erreur_message[0]; ?></font></td></tr>

<tr><td class="cadre" width="15"></td><td class="cadre">Adresse<font


color="#FF0000">*</font> : </td>
<td class="cadre"><input type="text" name="rue" value="<?php echo $rue;
?>" size="30" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[6]=="rue") echo $erreur_message[0]; ?></font></td></tr>

<tr><td class="cadre" width="15"></td><td class="cadre">Code


postal<font color="#FF0000">*</font> : </td>
<td class="cadre"><input type="text" name="cp" value="<?php echo $cp;
?>" size="30" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[7]=="cp") echo $erreur_message[0]; if ($erreur[11]=="codepostalValide" &&
$erreur[7]=="") echo $erreur_message[2]; ?></font></td></tr>

<tr><td class="cadre" width="15"></td><td class="cadre">Ville<font


color="#FF0000">*</font> : </td>
<td class="cadre"><input type="text" name="ville" value="<?php echo
$ville; ?>" size="30" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[8]=="ville") echo $erreur_message[0]; ?></font></td></tr>

Rapport de stage 59
Site Lantre du dragon
Sandrine BUENDIA Annexes

<tr><td class="cadre" width="15"></td><td class="cadre">Adresse e-


mail<font color="#FF0000">*</font> : </td>
<td class="cadre"><input type="text" name="mail" value="<?php echo
$mail; ?>" size="30" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[9]=="mail") echo $erreur_message[0]; if ($erreur[12]=="mailValide" &&
$erreur[9]=="") echo $erreur_message[1]; ?></font></td></tr>

<tr><td class="cadre" width="15"></td><td class="cadre"><br /><input


type="submit" value="S'inscrire"></td>
<td class="cadre"><font size="-1"><font color="#FF0000">*</font>
champs obligatoires</font></td></tr>
</table>
<input type="hidden" name="prem" value=0>
</form>
<?php
}
// S'il n'y a pas d'erreurs, on crer la requte
else
{
// Codage du mot de passe
$mdp=md5($mdp1);
$pseudo=addslashes($pseudo);
$nom=addslashes($nom);
$prenom=addslashes($prenom);
$rue=addslashes($rue);
$ville=addslashes($ville);
// Connexion la base
connexion();
// On envoie la requte
mysql_query($requete6) or die('Erreur SQL
!<br>'.$requete6.'<br>'.mysql_error());

// On ferme la connexion mysql


deconnexion();
// Rappel des informations enregistres dans la base
?>
Votre compte a bien t enregistr.<br />
Rappel des informations saisies : <br/><br/>

<table class='cadre'>
<tr>
<td class='cadre'>Login : </td>
<td class='cadre'><em><?php echo $pseudo; ?></em></td>
</tr>
<tr>
<td class='cadre'>Nom : </td>
<td class='cadre'><em><?php echo $nom; ?></em></td>
</tr>
<tr>

Rapport de stage 60
Site Lantre du dragon
Sandrine BUENDIA Annexes

<td class='cadre'>Prnom : </td>


<td class='cadre'><em><?php echo $prenom; ?></em></td>
</tr>
<tr>
<td class='cadre'>Numro de tlphone : </td>
<td class='cadre'><em><?php echo $tel; ?></em></td>
</tr>
<tr>
<td class='cadre' valign="top">Adresse : </td>
<td class='cadre'><em><?php echo $rue; ?><br /><?php echo $cp; ?><br
/><?php echo $ville; ?></em></td>
</tr>
<tr>
<td class='cadre'>E-mail : </td>
<td class='cadre'><em><?php echo $mail; ?></em></td>
</tr>
</table>
<form method="post" action="antre.php?page=login">
<input type="hidden" name="login" value="<?php echo $pseudo; ?>">
<input type="hidden" name="mdp" value="<?php echo $mdp1; ?>">
<input type="hidden" name="position" value="accueil">
<input type="submit" value="Terminer" />
</form>
<?php
}
}
// Sinon c'est un membre dj inscrit, donc interdiction d'accder cette page
else
{
?>
<center><h1>Inscription</h1></center>
Vous tes dj inscris sur le site de l\'Antre du Dragon.
<?php
}
?>

Rapport de stage 61
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier envoiecode.php :

<?php
// Vrification des droits de la personne connecte (session)
if(isset($_SESSION['droit'])) $droit = $_SESSION['droit'];
else $droit = 0;

// Si le droit est 0, c'est un visiteur, donc autorisation d'afficher la page


if ($droit==0)
{
$nouveaumdp="";
// Appel des fonctions pour la connexion et la deconnexion la base de donnes
require('./fonction/fonctionsUtiles.php');
require('./fonction/requete.php');

if(isset($_POST['pseudo'])) $pseudo=$_POST['pseudo'];
else $pseudo="";

if(isset($_POST['mail'])) $mail=$_POST['mail'];
else $mail="";

if(isset($_POST['prem'])) $prem=$_POST['prem'];
else $prem=true;

// Tableau contenant les messages d'erreurs.


$erreur_message = array(0 => 'Champs obligatoire',
1 => 'Adresse Email non valide');

// Dclaration et initialisation du tableau $erreur


$table[0]="";
$erreur=initTab($table,2);

// Si ce n'est pas le premier affichage du formulaire, on cherche les erreurs


if (!$prem)
{
// Champs obligatoires :
if($pseudo=="")
$erreur[0]="pseudo";

if ($mail=="")
$erreur[1]="mail";

// Adresse Email valide :


if ($mail!="" && !mailValide($mail))
$erreur[2]="mailValide";
}

// On vrifie s'il existe des erreurs (si le tableau erreur est vide ou non)
$estVide=tabVide($erreur,2);

Rapport de stage 62
Site Lantre du dragon
Sandrine BUENDIA Annexes

// Affichage du titre
?><center><h1>Code oubli</h1></center><?php
// Si il exite des erreurs ou si c'est le premier affichage, on affiche le formulaire
if (!$estVide or $prem==true)
{
?>
Votre nouveau code va vous tre envoy par e-mail. Vous pourrez ensuite le
modifier dans la partie "Mon compte".<br /><br />
<form action="antre.php?page=oubliemdp" method="POST">
<table class="cadre">
<tr><td class="cadre" width="15"></td><td class="cadre">Login<font
color="#FF0000">*</font> : </td>
<td class="cadre"><input type="text" name="pseudo" value="<?php echo
$pseudo; ?>" size="20" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[0]=="pseudo") echo $erreur_message[0]; ?></font></td></tr>

<tr><td class="cadre" width="15"></td><td class="cadre">Adresse e-


mail<font color="#FF0000">*</font> : </td>
<td class="cadre"><input type="text" name="mail" value="<?php echo
$mail; ?>" size="20" /></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[1]=="mail") echo $erreur_message[0]; if ($erreur[2]=="mailValide" &&
$erreur[1]=="") echo $erreur_message[1]; ?></font></td></tr>

<tr><td class="cadre" width="15"></td><td class="cadre"><br /><input


type="submit" value="Envoyer"></td>
<td class="cadre"><font size="-1"><font color="#FF0000">*</font>
champs obligatoires</font></td>
</table>
<input type="hidden" name="prem" value=0>
</form>
<?php
}
// S'il n'y a pas d'erreurs, on crer la requte
else
{
// Connexion
connexion();
// On va chercher si le mail et le pseudo correspondent
$result = mysql_query($requete2) or die('Erreur SQL
!<br>'.$requete2.'<br>'.mysql_error().'<br />');

$nb = mysql_num_rows($result);
switch($nb)
{
case'0' : echo "L'adresse e-mail et le login indiqus ne correspondent
pas."; break;

Rapport de stage 63
Site Lantre du dragon
Sandrine BUENDIA Annexes

default : {
// Nouveau code
$mdp=codeAl();
$destinataire = $mail;
$objet = "L'Antre du Dragon : nouveau
code";
$message = ("Le compte utilisateur
".$pseudo." du site de l'Antre du Dragon a demand l'envoi d'un nouveau mot de passe : \n
\n
".$mdp." \n \n
Vous pourrez le
modifier aprs vous tre connect sur le site. \n
Si vous n'avez
pas demand ce message, ne vous inquitez pas, vous tes la seule personne recevoir ce
message. \n
S'il s'agit d'une
erreur, il vous suffit de vous connecter avec ce nouveau mot de passe et de le modifier par
la suite.\n\n
L'antre du
dragon\n

http://dragon.antre.free.fr");

// On envoi lemail
if ( mail($destinataire, $objet,
$message) )
{
$nouveaumdp=md5($mdp);
// On envoie la requte
mysql_query($requete3) or
die('Erreur SQL !<br>'.$requete3.'<br>'.mysql_error());

echo "Le message a bien t


envoy.";

$redir="antre.php?page=accueil";
redirection($redir);
?>
<noscript>
<form
action="antre.php?page=accueil" method="post">
<input type="submit"
value="Terminer" />
</form>
</noscript>
<?php
}

Rapport de stage 64
Site Lantre du dragon
Sandrine BUENDIA Annexes

else
{
?>
<br /><font color="#FF0000">
Echec de lenvoi du message.</font>
<?php

$redir="antre.php?page=accueil";
redirection($redir);
?>
<noscript>
<form
action="antre.php?page=accueil" method="post">
<input type="submit"
value="Terminer" />
</form>
</noscript>
<?php
}
}
}
deconnexion();
}
}
// Sinon c'est un membre dj inscrit, donc interdiction d'accder cette page
else
{
?>
<center><h1>Code oubli</h1></center>
Vous tes dj connect sur le site de l'Antre du Dragon.
<?php
}
?>

Rapport de stage 65
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier modifiercompte.php :

<?php
require('./fonction/fonctionsUtiles.php');

// Vrification des droits de la personne connecte (session)


if(isset($_SESSION['droit'])) $droit = $_SESSION['droit'];
else $droit = 0;
if(isset($_SESSION['pseudo'])) $pseudo = $_SESSION['pseudo'];
else $pseudo = '';

// Si le droit est diffrent de 0, c'est un membre, donc autorisation d'afficher la page


if ($droit!=0)
{
// On recupre les champs dans le cas o une donne entre est fausse
// Ceci permet l'administrateur de ne pas retaper tous les champs
// Si les champs existent, on les recupre dans une variable, sinon cette variable est
initialise "vide"
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";

if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
else $prenom="";

if(isset($_POST['tel'])) $tel=$_POST['tel'];
else $tel="";

if(isset($_POST['rue'])) $rue=$_POST['rue'];
else $rue="";

if(isset($_POST['cp'])) $cp=$_POST['cp'];
else $cp="";

if(isset($_POST['ville'])) $ville=$_POST['ville'];
else $ville="";

if(isset($_POST['mail'])) $mail=$_POST['mail'];
else $mail="";

if(isset($_POST['prem'])) $prem=$_POST['prem'];
else $prem=true;

require('./fonction/requete.php');

// Tableau contenant les messages d'erreurs.


$erreur_message = array(0 => 'Champs obligatoire',
1 => 'Adresse Email non valide',
2 => 'Code postal non valide');

Rapport de stage 66
Site Lantre du dragon
Sandrine BUENDIA Annexes

// Dclaration et initialisation du tableau $erreur


$table[0]="";
$erreur=initTab($table,8);

// Si ce n'est pas le premier affichage du formulaire, on cherche les erreurs


if (!$prem)
{
// Champs obligatoires :
if($nom=="")
$erreur[0]="nom";

if($prenom=="")
$erreur[1]="prenom";

if($tel=="")
$erreur[2]="tel";

if($rue=="")
$erreur[3]="rue";

if($cp=="")
$erreur[4]="cp";

if($ville=="")
$erreur[5]="ville";

if($mail=="")
$erreur[6]="mail";

// Code postal valide :


if (!codepostalValide($cp))
$erreur[7]="codepostalValide";

// Adresse Email valide :


if ($mail!="" && !mailValide($mail))
$erreur[8]="mailValide";
}
// On vrifie s'il existe des erreurs (si le tableau erreur est vide ou non)
$estVide=tabVide($erreur,8);
// Affichage du titre
?><center><h1>Modifier mon compte</h1></center><?php
// Si il exite des erreurs ou si c'est le premier affichage, on affiche le formulaire
if (!$estVide or $prem==true)
{
// Connexion la base de donnes
connexion();
// On envoie la requte
$req = mysql_query($requete7) or die('Erreur SQL
!<br>'.$requete7.'<br>'.mysql_error());

Rapport de stage 67
Site Lantre du dragon
Sandrine BUENDIA Annexes

while ( $row = mysql_fetch_array( $req ) )


{
// On rcupre les informations
$nom=$row['nom'];
$prenom=$row['prenom'];
$tel=$row['tel'];
$rue=$row['rue'];
$cp=$row['cp'];
$ville=$row['ville'];
$mail=$row['mail'];
}
deconnexion();
?>
Entrer les informations modifier dans le champs appropris.
<form method="post" action="antre.php?page=modifiercompte">
<table class='cadre'>
<tr><td valign='top' class='cadre'>Login : </td>
<td class='cadre'><?php echo $pseudo; ?></td>
<td class="cadre"></td></tr>

<tr><td valign='top' class='cadre'>Nom<font color="#FF0000">*</font> :


</td>
<td class='cadre'><input type="text" name="nom" value="<?php echo
$nom; ?>" size="30"></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[0]=="nom") echo $erreur_message[0]; ?></font></td></tr>

<tr><td valign='top' class='cadre'>Prnom<font color="#FF0000">*</font>


: </td>
<td class='cadre'><input type="text" name="prenom" value="<?php echo
$prenom; ?>" size="30"></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[1]=="prenom") echo $erreur_message[0]; ?></font></td></tr>

<tr><td valign='top' class='cadre'>Numro de tlphone<font


color="#FF0000">*</font> : </td>
<td class='cadre'><input type="text" name="tel" value="<?php echo $tel;
?>" size="30"></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[2]=="tel") echo $erreur_message[0]; ?></font></td></tr>

<tr><td valign='top' class='cadre'>Adresse<font color="#FF0000">*</font>


: </td>
<td class='cadre'><input type="text" name="rue" value="<?php echo $rue;
?>" size="30"></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[3]=="rue") echo $erreur_message[0]; ?></font></td></tr>

Rapport de stage 68
Site Lantre du dragon
Sandrine BUENDIA Annexes

<tr><td valign='top' class='cadre'>Code postal<font


color="#FF0000">*</font> : </td>
<td class='cadre'><input type="text" name="cp" value="<?php echo $cp;
?>" size="30"></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[4]=="cp") echo $erreur_message[0]; if ($erreur[7]=="codepostalValide" &&
$erreur[4]=="") echo $erreur_message[2]; ?></font></td></tr>

<tr><td valign='top' class='cadre'>Ville<font color="#FF0000">*</font> :


</td>
<td class='cadre'><input type="text" name="ville" value="<?php echo
$ville; ?>" size="30"></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[5]=="ville") echo $erreur_message[0]; ?></font></td></tr>

<tr><td valign='top' class='cadre'>E-mail<font color="#FF0000">*</font> :


</td>
<td class='cadre'><input type="text" name="mail" value="<?php echo
$mail; ?>" size="30"></td>
<td class="cadre"><font color="#FF0000" size="-1"><? if
($erreur[6]=="mail") echo $erreur_message[0]; if ($erreur[8]=="mailValide" &&
$erreur[6]=="") echo $erreur_message[1]; ?></font></td></tr>

<tr><td class="cadre"><br /><input type="submit" value="Modifier"></td>


<td class="cadre"><font size="-1"><font color="#FF0000">*</font>
champs obligatoires</font></td></tr>

</table>
<input type="hidden" name="prem" value=0>
</form>
<?php
}
// S'il n'y a pas d'erreurs, on crer la requte
else
{
$pseudo=addslashes($pseudo);
$nom=addslashes($nom);
$prenom=addslashes($prenom);
$rue=addslashes($rue);
$ville=addslashes($ville);
connexion();
// On envoie la requte
mysql_query($requete8) or die('Erreur SQL
!<br>'.$requete8.'<br>'.mysql_error());

// On ferme la connexion mysql


deconnexion();
?>

Rapport de stage 69
Site Lantre du dragon
Sandrine BUENDIA Annexes

Votre compte a bien t modifi.<br />


Rappel des informations saisies : <br/><br/>

<table class='cadre'>
<tr>
<td class='cadre'>Login : </td>
<td class='cadre'><em><?php echo $pseudo; ?></em></td>
</tr>
<tr>
<td class='cadre'>Nom : </td>
<td class='cadre'><em><?php echo $nom; ?></em></td>
</tr>
<tr>
<td class='cadre'>Prnom : </td>
<td class='cadre'><em><?php echo $prenom; ?></em></td>
</tr>
<tr>
<td class='cadre'>Numro de tlphone : </td>
<td class='cadre'><em><?php echo $tel; ?></em></td>
</tr>
<tr>
<td class='cadre' valign="top">Adresse : </td>
<td class='cadre'><em><?php echo $rue; ?><br /><?php echo $cp; ?><br
/><?php echo $ville; ?></em></td>
</tr>
<tr>
<td class='cadre'>E-mail : </td>
<td class='cadre'><em><?php echo $mail; ?></em></td>
</tr>
</table>
<form method="post" action="antre.php?page=compte">
<input type="submit" value="Terminer" />
</form>
<?php
}
}
// Sinon ce n'est pas l'administrateur, donc interdiction d'accder cette page
else
{echo'Vous n\'tes pas autoris accder cette partie du site.';}
?>

Rapport de stage 70
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier listereservation.php :

<?php

// Vrification des droits de la personne connecte (session)


if(isset($_SESSION['droit'])) $droit = $_SESSION['droit'];
else $droit = 0;
if(isset($_SESSION['pseudo'])) $pseudo = $_SESSION['pseudo'];
else $pseudo = '';

// Si le droit est gale 2, c'est un administrateur, donc autorisation d'afficher la page


if ($droit==2)
{
?>
<center><h1>Liste des rservations</h1></center>
Cette page vous permet de rcuprer la liste des rservations effectus par les
membres.<br />
Vous devez l'<font color="#FF0000">enregistrer</font> car il sera <font
color="#FF0000">effac</font> aprs le tlchargement.<br /><br />
<a href="./admin/telecharger.php" target="_blank" class="style2">Obtenir la
liste</a>
<?php
}
// Sinon ce n'est pas un administrateur, donc interdiction d'accder cette page
else
{echo'Vous n\'tes pas autoris accder cette partie du site.';}
?>

Fichier telecharger.php :

<?php
// infos du fichier
$fichier = '../admin/commande.rtf';
$nom_fichier = 'commande.rtf';

// tlchargement du fichier
header('Content-disposition: attachment; filename='.$nom_fichier);
header('Content-Type: application/force-download');
header('Content-Transfer-Encoding: fichier');
header('Content-Length: '.filesize($fichier));
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($fichier);
//suppression du fichier une fois le tlchargement termin.
unlink($fichier);
?>

Rapport de stage 71
Site Lantre du dragon
Sandrine BUENDIA Annexes

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"


"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Tlchargement</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$fich=fopen($fichier, 'w+');
$page="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1036{\\fonttbl{\\f0\\fswiss\\fcharset0
Arial;}}
{\\*\\generator Msftedit 5.41.15.1507;}\\viewkind4\\uc1\\pard\\qc\\ul\\f0\\fs32 Liste des
r\\'e9servations\\par
\\pard\\fs24\\par
\\ulnone\\fs20\\par
}";

fwrite($fich,$page);
//on ferme le fichier
fclose($fich);
?>
</body>
</html>

Rapport de stage 72
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier gerenews.php :

<?php
// Vrification des droits de la personne connecte (session)
if(isset($_SESSION['droit'])) $droit = $_SESSION['droit'];
else $droit = 0;
if(isset($_SESSION['pseudo'])) $pseudo = $_SESSION['pseudo'];
else $pseudo = '';

// Si le droit est gale 2, c'est un administrateur, donc autorisation d'afficher la page


if ($droit==2)
{
// On recupre les champs envoys par le formulaire
if(isset($_POST['titre'])) $titre=$_POST['titre'];
else $titre="";

if(isset($_POST['news'])) $news=$_POST['news'];
else $news="";

if(isset($_POST['prem'])) $prem=$_POST['prem'];
else $prem=true;

$erreur="";

require('./fonction/fonctionsUtiles.php');

// Si ce n'est pas le premier affichage du formulaire, on cherche les erreurs


if (!$prem)
{
// Champs obligatoires :
if ($titre=="" or $news=="")
$erreur="Vous devez remplir tous les champs.";
}
// Affichage du titre
?>
<center><h1>Grer les news</h1></center>
<?php
// Si il exite des erreurs ou si c'est le premier affichage, on affiche le formulaire
if ($erreur!="" or $prem==true)
{
?>
<u>Ajouter une news</u> : <br />
<font color="#FF0000" size="-1"><?php echo $erreur; ?></font>
<form action="antre.php?page=gerernews" method="post">
Titre : <br />
<input name="titre" type="text" size="66" value="<?php echo $titre; ?>"
/><br /><br />

Rapport de stage 73
Site Lantre du dragon
Sandrine BUENDIA Annexes

Texte :<br />


<textarea name="news" rows="10" cols="50"><?php echo $news;
?></textarea>
<br /><br /><input type="submit" value="Ajouter" />
<input type="hidden" name="prem" value=0>
</form>
<?php
// Connexion la base
connexion();
$part=1;
require('./fonction/requete.php');
//On envoie la requte
$result= mysql_query($requete52) or die('Erreur SQL
!<br>'.$requete52.'<br>'.mysql_error());
?>
<u>Liste des news existantes</u> : <br /><br />
<table class="cadre">
<?php
// Temps qu'il existe des news, on les affiches
while($archives = mysql_fetch_array($result))
{
$date=$archives['date'];
$titre=$archives['titre'];
$id=$archives['id'];
?>
<tr>
<td class="cadre">
- <? echo $date.' : '.$titre; ?>
</td><td class="cadre">
<font size="-1">[<a class="style2"
href="antre.php?page=modifiernews&id=<? echo $id; ?>">Modifier</a>] [<a
class="style2" href="antre.php?page=supprimernews&id=<? echo $id;
?>">Supprimer</a>]</font><br />
</td>
</tr>
<?php
}
?></table><?php
// Dconnexion de la base
deconnexion();
}
// S'il n'y a pas d'erreurs, on crer la requte
else
{
$date = date("d-m-Y");
$titre=addslashes($titre);
$news=addslashes($news);
// Connexion la base
connexion();

Rapport de stage 74
Site Lantre du dragon
Sandrine BUENDIA Annexes

$part=0;
require('./fonction/requete.php');
mysql_query($requete53) or die('Erreur SQL
!<br>'.$requete53.'<br>'.mysql_error());
deconnexion();

echo "News ajoute avec succs.";


$redir="antre.php?page=gerernews";
redirection($redir);
?>
<noscript>
<form action="antre.php?page=gerernews" method="post">
<input type="submit" value="Terminer" />
</form>
</noscript>
<?php
}
}
// Sinon ce n'est pas un administrateur, donc interdiction d'accder cette page
else
{echo'Vous n\'tes pas autoris accder cette partie du site.';}
?>

Rapport de stage 75
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier modifiernews.php :

<?php
// Vrification des droits de la personne connecte (session)
if(isset($_SESSION['droit'])) $droit = $_SESSION['droit'];
else $droit = 0;
if(isset($_SESSION['pseudo'])) $pseudo = $_SESSION['pseudo'];
else $pseudo = '';

// Si le droit est gale 2, c'est un administrateur, donc autorisation d'afficher la page


if ($droit==2)
{
//Rcupration de l'id
if(isset($_GET['id'])) $id=$_GET['id'];
else $id="";

// On recupre les champs envoys par le formulaire


if(isset($_POST['titre'])) $titre=$_POST['titre'];
else $titre="";

if(isset($_POST['news'])) $news=$_POST['news'];
else $news="";

if(isset($_POST['date'])) $date=$_POST['date'];
else $date="";

if(isset($_POST['prem'])) $prem=$_POST['prem'];
else $prem=true;

$erreur="";

require('./fonction/fonctionsUtiles.php');

// Si ce n'est pas le premier affichage du formulaire, on cherche les erreurs


if (!$prem)
{
// Champs obligatoires :
if ($titre=="" or $news=="")
$erreur="Vous devez remplir tous les champs.";
}
// Affichage du titre
?>
<center><h1>Modifier une news</h1></center>
<?php
// Si il exite des erreurs ou si c'est le premier affichage, on affiche le formulaire
if ($erreur!="" or $prem==true)
{
connexion();
$part=1;

Rapport de stage 76
Site Lantre du dragon
Sandrine BUENDIA Annexes

require('./fonction/requete.php');
$result= mysql_query($requete65) or die('Erreur SQL
!<br>'.$requete65.'<br>'.mysql_error());

$info = mysql_fetch_array($result);

$date=$info['date'];
$titre=$info['titre'];
$news=$info['news'];
?>
<font color="#FF0000" size="-1"><?php echo $erreur; ?></font>
<form action="antre.php?page=modifiernews&id=<? echo $id; ?>"
method="post">
Titre : <br />
<input name="titre" type="text" size="66" value="<?php echo $titre; ?>"
/><br /><br />
Texte :<br />
<textarea name="news" rows="10" cols="50" name="news"><?php echo
$news; ?></textarea>
<br /><br /><input type="submit" value="Modifier" />
<input type="hidden" name="prem" value=0>
<input type="hidden" name="date" value="<?php echo $date; ?>">
</form>
<?php
deconnexion();
}
// S'il n'y a pas d'erreurs, on crer la requte
else
{
$date = date("d-m-Y");
$titre=addslashes($titre);
$news=addslashes($news);
// Connexion la base
connexion();
$part=0;
require('./fonction/requete.php');
mysql_query($requete66) or die('Erreur SQL
!<br>'.$requete66.'<br>'.mysql_error());
deconnexion();

echo "News modifie avec succs.";


$redir="antre.php?page=gerernews";
redirection($redir);
?>
<noscript>
<form action="antre.php?page=gerernews" method="post">
<input type="submit" value="Terminer" />
</form>
</noscript>

Rapport de stage 77
Site Lantre du dragon
Sandrine BUENDIA Annexes

<?php
}
}
// Sinon ce n'est pas un administrateur, donc interdiction d'accder cette page
else
{echo'Vous n\'tes pas autoris accder cette partie du site.';}
?>

Fichier supprimernews.php :

<?php
// Vrification des droits de la personne connecte (session)
if(isset($_SESSION['droit'])) $droit = $_SESSION['droit'];
else $droit = 0;
if(isset($_SESSION['pseudo'])) $pseudo = $_SESSION['pseudo'];
else $pseudo = '';

// Si le droit est gale 2, c'est un administrateur, donc autorisation d'afficher la page


if ($droit==2)
{
//Rcupration de l'id
if(isset($_GET['id'])) $id=$_GET['id'];
else $id="";

require('./fonction/fonctionsUtiles.php');
connexion();
require('./fonction/requete.php');
mysql_query($requete77) or die('Erreur SQL
!<br>'.$requete77.'<br>'.mysql_error());
?>
<center><h1>Supprimer une news</h1></center>
News supprime avec succs.
<?php
$redir="antre.php?page=gerernews";
redirection($redir);
?>
<noscript>
<form action="antre.php?page=gerernews" method="post">
<input type="submit" value="Terminer" />
</form>
</noscript>
<?php
}
// Sinon ce n'est pas un administrateur, donc interdiction d'accder cette page
else
{echo'Vous n\'tes pas autoris accder cette partie du site.';}
?>

Rapport de stage 78
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier album.php :

<?php
// Vrification des droits de la personne connecte (session)
if(isset($_SESSION['droit'])) $droit = $_SESSION['droit'];
else $droit = 0;
if(isset($_SESSION['pseudo'])) $pseudo = $_SESSION['pseudo'];
else $pseudo = '';

// Si le droit est gale 2, c'est un administrateur, donc autorisation d'afficher la page


if ($droit==2)
{
// On recupre les champs envoys par le formulaire
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";

if(isset($_POST['commentaires'])) $commentaires=$_POST['commentaires'];
else $commentaires="";

if(isset($_POST['prem'])) $prem=$_POST['prem'];
else $prem=true;

$erreur="";

require('./fonction/fonctionsUtiles.php');

// Si ce n'est pas le premier affichage du formulaire, on cherche les erreurs


if (!$prem)
{
// Champs obligatoires :
if ($nom=="")
{
$erreur="Champs obligatoire.";
}
else
{
connexion();
$nom=addslashes($nom);
$part=2;
require('./fonction/requete.php');
$result= mysql_query($requete45) or die('Erreur SQL
!<br>'.$requete45.'<br>'.mysql_error());
$total = mysql_num_rows($result);
switch ($total)
{
case 0 : $erreur="Cet vnement n'existe pas."; break;

Rapport de stage 79
Site Lantre du dragon
Sandrine BUENDIA Annexes

case 1 : {
$rec = mysql_fetch_array($result);

$ideven=$rec['num'];
$chemin=formatalbum($nom);
if (is_dir("./admin/album/".$chemin))
{
$erreur="Cet album photo existe
dj.";
}
break;
}
}
deconnexion();

}
}
// Affichage du titre
?>
<h1><center>Crer un album photo</center></h1><br />
<?php
// Si il exite des erreurs ou si c'est le premier affichage, on affiche le formulaire
if ($erreur!="" or $prem==true)
{
?>
Les albums photos permettront d'illustrer les vnements prsents dans la
partie "Evnements".<br /><br />
<!-- Dbut du formulaire d'enregistrement d'une structure -->
<table class="cadre">
<form method="post" action="antre.php?page=album" name="pagemere">
<tr>
<td class="cadre">Nom de l'vnement<font color="#FF0000">*</font> :
</td>
<td class="cadre"><input type="text" name="nom" value="<?php echo
$nom; ?>" size="20"> <a class="style2" href="antre.php?page=popup&java=non"
onClick="window.open('admin/popup.php','popup', 'toolbar=no, status=yes, scrollbars=no,
resizable=no, width=200, height=100'); return false;">Rechercher</a> <font
color="#FF0000" size="-1"><?php echo $erreur; ?></font></td>
</tr><tr>
<td class="cadre" valign="top">Commentaire : </td>
<td class="cadre"><textarea name="commentaires" rows=10
cols="50"></textarea></td>
</tr><tr>
<td class="cadre"></td>
<td class="cadre"><font size="-1"><font color="#FF0000">*</font>
champs obligatoires</font></td></tr>
</table>
<br /><input type="submit" value="Ajouter des photos" />
<input type="hidden" name="prem" value=0 />

Rapport de stage 80
Site Lantre du dragon
Sandrine BUENDIA Annexes

</form>
<?php
// Connexion la base
connexion();
//On envoie la requte
$part=1;
require('./fonction/requete.php');
$result= mysql_query($requete46) or die('Erreur SQL
!<br>'.$requete46.'<br>'.mysql_error());
?>
<u>Liste des albums existants</u> : <br /><br />
<table class="cadre">
<?php
// Temps qu'il existe des news, on les affiches
while($album = mysql_fetch_array($result))
{
$nomdossier=$album['nomdossier'];
?>
<tr>
<td class="cadre">
- <? echo $nomdossier; ?>
</td><td class="cadre">
<font size="-1">[<a class="style2"
href="antre.php?page=photoplus&nomdossier=<? echo $nomdossier; ?>">Ajouter des
photos</a>] [<a class="style2" href="antre.php?page=supprimeralbum&nomdossier=<?
echo $nomdossier; ?>">Supprimer</a>]</font><br />
</td>
</tr>
<?php
}
?></table><?php
// Dconnexion de la base
deconnexion();
}
// S'il n'y a pas d'erreurs, on crer la requte
else
{
$nomdossier=formatalbum($nom);
//Cration du dossier portant le nom de la randonne
mkdir ("admin/album/".$nomdossier."", 0770); //Pas de droit d'excution
$commentaires=addslashes($commentaires);
//connexion
connexion();
$part=0;
require('./fonction/requete.php');
// on envoie la requte
mysql_query($requete47) or die('Erreur SQL
!<br>'.$requete47.'<br>'.mysql_error());

Rapport de stage 81
Site Lantre du dragon
Sandrine BUENDIA Annexes

// on ferme la connexion mysql


deconnexion();
?>
Veuillez choisir la photo ajouter l'album.<br /><br />
<form method="post" action="antre.php?page=upphoto"
enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
Photo : <input type="file" name="photo" /><br /><br />
<input type="submit" name="envoi" value="Envoyer la photo" />
<input type="hidden" name="nomdossier" value="<?php echo
$nomdossier; ?>"></p>
</form>
<?php
}
}
// Sinon ce n'est pas un administrateur, donc interdiction d'accder cette page
else
{echo'Vous n\'tes pas autoris accder cette partie du site.';}
?>

Rapport de stage 82
Site Lantre du dragon
Sandrine BUENDIA Annexes

Fichier upphoto.php :

<?php
// Vrification des droits de la personne connecte (session)
if(isset($_SESSION['droit'])) $droit = $_SESSION['droit'];
else $droit = 0;
if(isset($_SESSION['pseudo'])) $pseudo = $_SESSION['pseudo'];
else $pseudo = '';

// Si le droit est gale 2, c'est un administrateur, donc autorisation d'afficher la page


if ($droit==2)
{
if(isset($_POST['nomdossier'])) $nomdossier=$_POST['nomdossier'];
else $nomdossier="";

require('./fonction/fonctionsUtiles.php');
?>
<h1><center>Crer un album photo</center></h1><br />
<?php
//On vrifie si un fichier a bien t slectionn
if(isset($_FILES['photo']))
{
// paramtres:

unset($erreur);
//extensions accptes :
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg','JPG','GIF','JPEG','PNG');
//taille maximale
$taille_max = 500000; //environ 500ko
//dossier de destination
$dest_dossier = "admin/album/".$nomdossier."/";

if(!in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok


))
{
$erreur = 'Veuillez slectionner un fichier de type png, gif ou jpg.';
}
// de la taille
elseif( file_exists($_FILES['photo']['tmp_name']) and
filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500ko!';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);

Rapport de stage 83
Site Lantre du dragon
Sandrine BUENDIA Annexes

// formatage nom fichier :


// enlever les accents :
$dest_fichier =
strtr($dest_fichier,'','
AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _ :
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// copie du fichier
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier .
$dest_fichier);
?>
Votre photo a bien t envoye! <br /><br />

<!-- Formulaire renvoyant au formulaire prcdent afin d'ajouter un


responsable -->
<table class='cadre'>
<tr><td class='cadre'>
<form method="post" action="antre.php?page=photoplus">
<input type="hidden" name="nomdossier" value="<?php echo
$nomdossier; ?>">
<input type="submit" name="envoyer" value="Ajouter une autre
photo">
</form>
<!-- Formulaire renvoyant la page d'accueil de l'administrateur -->
</td><td class='cadre'>
<form method="post" action="antre.php?page=album">
<input type="submit" value="Terminer">
</form>
</td></tr></table>
<?php
}
}
//en cas d'erreur :
if(isset($erreur))
{
echo '<br>', $erreur ,'</br>';
?>
<form method="post" action="antre.php?page=photoplus">
<input type="hidden" name="nomdossier" value="<?php echo
$nomdossier; ?>">
<input type="submit" name="envoyer" value="Corriger">
</form>
<?php
}
}
// Sinon ce n'est pas un administrateur, donc interdiction d'accder cette page
else
{echo'Vous n\'tes pas autoris accder cette partie du site.';}
?>

Rapport de stage 84
Site Lantre du dragon
Sandrine BUENDIA Rsum

Rsum
Pour clturer la seconde anne dtude lIUT, les tudiants doivent effectuer un
stage en entreprise, afin dapprendre connatre les conditions de travail en
entreprise et de mettre en pratique les connaissances acquises au cours du
cursus universitaire. Mon stage consistait raliser le site Internet de lentreprise
lantre du dragon . Lantre du dragon est un magasin proposant des jeux, des
maquettes, des figurines, et organise des vnements tels que des tournois,
des concours, Ce site est destin aux personnes connaissant le magasin ou
aux personnes souhaitant le dcouvrir et permettra de les informer des
nouveauts, des vnement, mais aussi de consulter leur catalogue en ligne et
deffectuer des rservations. Mon travail a donc consist programmer ce site,
aprs son analyse, afin de rpondre au mieux au cahier des charges. Lutilisation
des langages PHP et SQL, ainsi quune base de donnes mont permis de raliser
un site dynamique avec une partie utilisateur, destine aux visiteurs, et une partie
administrateur, rserve la personne qui va grer le site et qui permet une mise
jour facile et rapide des informations et donc du site, sans besoin davoir de
connaissances particulires en informatique.

Mots-cls : analyse, site Internet, facilit de mise jour, PHP/MySQL, base


de donnes, dynamisme

Summary
To conclude the second IUTs year, students have to do a training period, in order
to know the working conditions in an enterprise and to use the knowledge acquired
in the colleges cycle. My stage aimed to realize the Internets enterprise website
Lantre du dragon. Lantre du dragon is a shop selling games, maquets,
miniatures, And organize events like tournaments, contests, This website is
intended for people who know the shop or for persons who wish to discover it and
it will allow to inform them about the news, events but also to see the on-line
catalogue and to make reservations. My job was to program this website, after its
analyse, in order to answer the best to the (cahier des charges). The PHP and
SQL languages ,and a data base allowed me to realize a dynamic website with a
users part for the guests and an administrators part reserved for the person who
will manage the website and will allow a great updating facilities, that not required
particular knowledge in data processing.

Keywords : web site, facilited by update, PHP/MySQL, data base

Rapport de stage 85
Site Lantre du dragon