PDA

Voir la version complète : [programmation] Faire Son Site En Php


Créateur de bugs
09/01/2005, 11h16
<p align="center]<font size="3" face="Verdana" color="#3366FF]Faire son site
en php</font></p>
<p align="center]<font size="3" face="Verdana" color="#3366FF]</font></p>


<font face="Verdana" size="2]Lorsque, comme la plupart des sites, vous utilisez
un menu sur toutes vos pages, gérer le site devient de plus en plus long. Le
php permet de vous simplifier considérablement la vie en vous évitant de modifier
toutes les pages lorsque vous voulez changer le menu. Le principe est simple:
vous utilisez un fichier de base dans lequel vous mettez votre menu, et vous
appelez la page voulue dans ce fichier.</FONT></p>


<font face="Verdana" size="2]Ce principe peut bien entendu être étendu et
vous pouvez ensuite scinder votre site en différentes parties indépendantes.</FONT></p>


<font face="Verdana" size="2]Passer son site au php pas à pas:</font></p>


<font face="Verdana" size="2]</FONT></p>


<font face="Verdana" size="2]Admettons que vous ayez votre page principale,
composée comme suit:</FONT></p>
<table border="1" width="428]
<tr>
<td width="418" colspan="2]
<p align="center]<font face="Verdana" size="2]1</FONT></p>
</td>
</tr>
<tr>
<td width="113" height="66]
<p align="center]<font face="Verdana" size="2]2</FONT></p>
</td>
<td width="299" height="66]
<p align="center]<font face="Verdana" size="2]3</FONT></p>
</td>
</tr>
</table>


<font face="Verdana" size="2]1: bannières, menus ou autres
2: menu principal
3:
pages à afficher</FONT></p>


<font face="Verdana" size="2]Il faut donc que lorsque vous cliquez sur un
lien d'un menu la page demandée s'affiche dans la case 3.</FONT></p>


<font face="Verdana" size="2]Nous allons donc commencer par le plus évident:
vous devez renommer votre fichier en .php (dans cetexemple prenons"index.php").
D'autres extensions peuvent être utilisées, comme .php3 ou .php4 mais pour l'instant
cela n'a aucune importance.</FONT></p>


<font face="Verdana" size="2]En php, pour appeler ainsi une page on utilise
la fonction include. Elle se présente comme suit:</FONT></p>
<table align="center" border="1" cellspacing="0" width="367" bgcolor="#99CCFF" bordercolordark="white" bordercolorlight="black]
<tr>
<td width="361]


<font face="Verdana" size="2]<?
include('page.htm');
?></FONT></p>
</td>
</tr>
</table>


<font face="Verdana" size="2]Ce simple code se traduira par l'affichage
de la page "page.htm". Cette dernière n'a pas besoin d'être en php.</FONT></p>


<font face="Verdana" size="2]Dans le cas qui nous intéresse donc, nous voulons
afficher une certaine page selon l'adresse. Pour peu que votre site soit de
bonne taille, vous pouvez vous retrouver avec un code assez gros, car il va
falloir tout faire au cas par cas. Nous allons donc placer ces cas dans un autre
fichier que nous allons encore une fois appeler sur lapage principale à l'aide
de l'include. Appelons ce fichier "pages.php".</FONT></p>


<font face="Verdana" size="2]Pour des raisons de clarté nous allons également
considérer que vos différentes pages sont stockées dans le répertoire "pages".</FONT></p>


<font face="Verdana" size="2]</FONT></p>


<font face="Verdana" size="2]Sur la page principale il faut donc appeler
le fichier pages.php. Il suffit alors de placer le code:</FONT></p>
<table align="center" border="1" cellspacing="0" width="367" bgcolor="#99CCFF" bordercolordark="white" bordercolorlight="black]
<tr>
<td width="361]


<font face="Verdana" size="2]<?
include('pages.php');
?></FONT></p>
</td>
</tr>
</table>


<font face="Verdana" size="2]à l'endroit où les pages doivent s'afficher,
c'est à dire ici dans la case 3 de notre tableau.</FONT></p>


<font face="Verdana" size="2]Maintenant considérons le fichier pages.php:</FONT></p>
<table align="center" border="1" cellspacing="0" width="367" bgcolor="#99CCFF" bordercolordark="white" bordercolorlight="black]
<tr>
<td width="361]


<font face="Verdana" size="2]<?</FONT><font color="red" face="Verdana" size="2]
if(isset($page)){</font><font color="#003399" face="Verdana" size="2]
if($page=='photos'){
include('pages/photos.htm');
}
</font><font color="#339966" face="Verdana" size="2]elseif($page=='articles'){
include('pages/articles.htm');
}
</font><font color="#990066" face="Verdana" size="2]else{
include('pages/accueil.htm');
}</font><font face="Verdana" size="2]
</FONT><font color="red" face="Verdana" size="2]}else{
include('pages/accueil.htm');
}</font><font face="Verdana" size="2]
?></FONT></p>
</td>
</tr>
</table>


<font face="Verdana" size="2]Les adresses sont du type index.php?page=photos</FONT></p>


<font face="Verdana" size="2]On donne donc une certaine valeur à la variable
$page selon la page que l'on veut voir s'afficher.</FONT></p>


<font face="Verdana" size="2]if(isset($page)){ signifie: "si la variable
$page existe..."
En effet il faut faire en sorte qu'un visiteur ne se
rendant pas sur une page particulière voit s'afficher la page d'accueil. Nous
faisons donc:</FONT></p>


<font color="#3366FF" face="Verdana" size="2]if(isset($page)) </font><font color="#FF9900" face="Verdana" size="2]si
la variable $page existe</font><font color="#3366FF" face="Verdana" size="2]
{
</font><font color="#FF9900" face="Verdana" size="2]alors</font><font color="#3366FF" face="Verdana" size="2]
[on
affiche la page demandée]
} </font><font color="#FF9900" face="Verdana" size="2]fin
de la condition</font><font color="#3366FF" face="Verdana" size="2]
else{
</font><font color="#FF9900" face="Verdana" size="2]sinon</font><font color="#3366FF" face="Verdana" size="2]
[on
affiche la page d'accueil]
} </font><font color="#FF9900" face="Verdana" size="2]fin
de la condition</font></p>


<font face="Verdana" size="2]Maintenant que nous avons vu la structure générale,
il nous reste à appeler les pages. Il faut donc selon la valeur de la variable
$page appeler une certaine page. pour cela on utilise une structure identique:</FONT></p>


<font color="#3366FF" face="Verdana" size="2]if($page=='photos') </font><font color="#FF9900" face="Verdana" size="2]si
la valeur de la variable $page est "photos"
</font><font color="#3366FF" face="Verdana" size="2]{
</font><font color="#FF9900" face="Verdana" size="2]alors
</font><font color="#3366FF" face="Verdana" size="2]include('pages/photos.htm');
</font><font color="#FF9900" face="Verdana" size="2]on
affiche le fichier photos.htm du répertoire "pages"
</font><font color="#3366FF" face="Verdana" size="2]}elseif($page=='articles'){
</font><font color="#FF9900" face="Verdana" size="2]sinon/si
la $page vaut 'articles'
</font><font color="#3366FF" face="Verdana" size="2]include('pages/articles.htm');</font><font color="#FF9900" face="Verdana" size="2]
on affiche la page articles.htm
</font><font color="#3366FF" face="Verdana" size="2]}
</font><font color="#FF9900" face="Verdana" size="2]fin
de la condition
</font><font color="#3366FF" face="Verdana" size="2]else{
</font><font color="#FF9900" face="Verdana" size="2]si
la variable $page vaut autre chose
</font><font color="#3366FF" face="Verdana" size="2]include('pages/accueil.htm');
</font><font color="#FF9900" face="Verdana" size="2]on
affiche la page d'accueil
</font><font color="#3366FF" face="Verdana" size="2]}
</font><font color="#3399FF" face="Verdana" size="2]</font><font color="#FF9900" face="Verdana" size="2]fin
de la condition</font></p>


<font face="Verdana" size="2]</FONT></p>


<font face="Verdana" size="2]Vous pouvez remarquer que les deux "</FONT><font color="#3366FF" face="Verdana" size="2]else</font><font face="Verdana" size="2]"
servent de sécurité: dans le premier cas cela sert à ce que la page index.php
affiche automatiquement l'accueil, dans le deuxième cas cela fait que si un
visiteur donne une valeur différente à la variable $page ou si vous vous trompez
dans un lien, l'accueil sera affiché. cela sert de page d'erreur et évite aux
visiteurs tombant sur une mauvaise page de voir un message d'erreur peu esthétique.
Vous pouvez bien entendu remplacer la page du second cas par une page d'erreur
demandant par exemple au visiteur de vous signaler l'erreur.</FONT></p>


<font face="Verdana" size="2]Récapitulons: le fichier index.php appelle
le fichier pages.php qui lui-même affiche la page demandée. Il ne vous reste
donc plus qu'à personnaliser le fichier </FONT><font color="#3366FF" face="Verdana" size="2]pages.php</font><font face="Verdana" size="2]
pour votre site; à chaque nouvelle page ajoutée c'est lui qu'il faudra modifier.
Et dorénavant ce qui s'affichera autour de vos pages sera contenu dans le seul
fichier "index.php": votre menu est unique, et en modifiant un seul
fichier vous modifiez l'ensemble des pages de votre site.</FONT></p>


<font face="Verdana" size="2]</FONT></p>


<font face="Verdana" size="2]A ce moment vous pouvez faire la remarque:
"mais pourquoi ne pas donner simplement à la variable $page l'adresse de
la page à afficher ?". La raison en est simple: une personne mal intentionnée
pourrait alors donner à cette variable l'adresse d'une page extérieure à votre
site et pourrait ainsi éxécuter un script qui lui permettrait de modifier
votre site, notamment si vous utilisez d'autres codes php.</FONT></p>


<font face="Verdana" size="2]Cependant il existe des scripts pour vérifier
que les pages demandées appartiennent à votre site. Il est donc possible de
se priver du fichier pages.php, mais à ce moment autant utiliser une technique
plus avancée:</FONT></p>


<font face="Verdana" size="2]-en restant dans la même méthode vous pouvez
remplacer les différents include par un unique: </FONT><font color="#3366FF" face="Verdana" size="2]include('pages/'.$page.'.htm');</font><font face="Verdana" size="2]
Ainsi
plus besoin de modifier le fichier pages.php car votre index affichera la page
nommée </FONT><font color="#3366FF" face="Verdana" size="2][valeur de la variable
$page].htm</font><font face="Verdana" size="2]
Par exemple l'adresse </FONT><font color="#3366FF" face="Verdana" size="2]index.php?page=truc</font><font face="Verdana" size="2]
appellera le fichier </FONT><font color="#3366FF" face="Verdana" size="2]pages/truc.htm</font><font face="Verdana" size="2]
Cette
méthode a toutefois l'inconvénient de vous limiter (légèrement) dans le nom
de vos pages et l'adresse de celles-ci (bien que vous puissiez mélanger les deux
méthodes pour contourner ces problèmes).</FONT></p>


<font face="Verdana" size="2]Mais pour la suite nous allons plutôt nous
intéresser à une méthode plus poussée: l'utilisation de la base de données...</FONT></p>

SeB2003
09/01/2005, 19h11
la suite! :)

SeB B)

frakson
27/02/2005, 11h49
Bonjour à tous et à toutes :)

Merci pour ce tuto qui m'as bien servi.
Il y a juste une chose que je ne comprend pas , c'est comment à partir d'un lien on peu assigner une valeur à $page , car dans le menu , chaque liens doit lui assigner une valeur pour que page.php puisse afficher la page souhaitée..

Excusez mon ignorance mais je suis un vrai débutant en PHP :x

Merci d'avance :)

astrofiles
27/02/2005, 12h25
Message écrit par frakson@Feb 27 2005, 10:49 AM
[b]comment à partir d'un lien on peu assigner une valeur à $page , car dans le menu , chaque liens doit lui assigner une valeur pour que page.php puisse afficher la page souhaitée..



Hello,
Je ne comprends pas trés bien ta question, pourrait-tu etre plus précis ou donner un exemple?

Assigner une valeur a $page a partir d'un lien est simple : index.php?page=truc

En créant ce lien, php considère que le mot page devient une variable ($page).
donc $page = truc

Créateur de bugs
06/03/2005, 17h17
oups effectivement j'avais oublié de dire ça... merci :)