Site en php : fonctions ?

Relax
Invité n'ayant pas de compte PHPfrance

09 juil. 2009, 14:46

Bonjour,

J'ai l'habitude de faire mes sites php avec quelques includes du genre :
<?php include 'header.php'; ?>
<table>
	<tr>
		<th>Bienvenue sur mon site</th>
	</tr>
	<tr>
		<td>Bon surf !</td>
	</tr>
</table>
<?php include 'footer.php'; ?>
Mais j'ai vu plusieurs site qui utilisaient des fonctions pour afficher leur page, par exemple leurs différentes rubriques sont : page.php?page=fruits | page.php?page=legumes | etc. ...

Ce qui donnerait peut-être :
<?php get_header(); ?>
<!-- sachant qu'un table s'ouvre dans le header -->
<td><?php get_page($page); //$page étant la variable récupérée (fruits ou légumes) ?></td>
<?php get_footer(); ?>

Ma question est donc : Quelle est la meilleure façon de faire un site php ? Ou sinon, où pourrais-je trouver un site exemple.

Merci

ViPHP
ViPHP | 928 Messages

09 juil. 2009, 15:13

Honnêtement, dans cet exemple c'est du pareil au même. Ca dépend vraiment de ton site web après, certains le font directement en mélangeant PHP et HTML (la solution utilisée quand on a pas le temps généralement), d'autres en utilisant des templates, voire même en mettant en place du MVC (inutile je trouve si ton site n'est pas suffisament grand).

ViPHP
AB
ViPHP | 5818 Messages

10 juil. 2009, 01:19

Souvent quand tu as page=fruit | page=légume c'est pour renseigner une requête qui va chercher en bdd des informations différentes qui s'afficheront dans la même page (avec les mêmes automatismes de mise en page).

Invité
Invité n'ayant pas de compte PHPfrance

11 juil. 2009, 00:06

Non justement c'est vraiment des pages différentes comme inscriptions, résultats ....
Mais bon s'il n'y a pas d'utilités particulières alors je vais rester sur ma façon.

Mammouth du PHP | 686 Messages

11 juil. 2009, 10:17

ba c'est juste qu'en fonction de la variable,
sur le site il doit faire un include totalement different.
Moi c'est ce que je fais sur un site,
si la personne n'est pas loggée, alors l'include se fait vers une page d'identification ou d'inscription et si il est loggé ba il a acces à la page acces (include("includes/logg.php")) du site (include("includes/index_site.php")) toutes deux dans le dossier ou il y ma mes pages includes.
Mais tout cela le surfeur le voit pas car il reste sur la page index
<?php
session_start();
if (session_is_registered("admin")) {
include("includes/index_site.php");
}
else{
include("includes/logg.php");
}

ViPHP
AB
ViPHP | 5818 Messages

11 juil. 2009, 14:59

Souvent quand tu as page=fruit | page=légume c'est pour renseigner une requête qui va chercher en bdd des informations différentes qui s'afficheront dans la même page (avec les mêmes automatismes de mise en page).
Non justement c'est vraiment des pages différentes comme inscriptions, résultats ....
Mais bon s'il n'y a pas d'utilités particulières alors je vais rester sur ma façon.
C'était juste une remarque.

Je disais pas ça pour dire qu'il y a une bonne façon et l'autre pas. Il y a de nombreuses façons de faire et toutes peuvent utilisées conjointement ou séparément suivant les besoins :wink:
Et php permet justement cette souplesse.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 juil. 2009, 16:14

C'est surtout une question de contexte en fait... A mon sens, il n'y a pas de bonnes ou de mauvaises façon de faire, chaque solution ayant ses avantages et ses inconvénients, il n'y a que des façons plus ou moins adaptée pour réaliser quelque chose de précis :)

Cette méthode (une page index à laquelle on passe des paramètres) permet d'avoir un accès unique à toutes les pages du site. Ainsi, quelque soit la page demandée, tu es sur que l'utilisateur fera au préalable appel à ton script principal. Tu peux ainsi centraliser l'inclusion d'entête et de pied de page (au lieu de devoir le faire dans chaque script), mais aussi centralier un contrôle d'authentification, le choix du format en html, pdf ou autre, ...

En revanche, avec ce type d'url, les moteurs de recherche indexent moins bien les pages et il faut donc généralement rajouter une couche d'url rewriting pour le référencement. Difficile également d'utiliser des header() pour des redirection dans tes scripts quand l'index à déjà généré le début du code html, et il faut jouer avec les buffers...

Cette structure, à la base du MVC2, sera plus intéressante pour un site comportant un grand nombre de modules, car beaucoup trop lourde et à maintenir s'il n'y a que 3 pages à gérer derrière. Elle n'est pas meilleure ou moins bonne, mais conviendra d'avantage à une application réalisée en php qu'à un site web... :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
AB
ViPHP | 5818 Messages

11 juil. 2009, 16:41

En revanche, avec ce type d'url, les moteurs de recherche indexent moins bien les pages et il faut donc généralement rajouter une couche d'url rewriting pour le référencement.
On peut également en fonction de la variable de page appelée dans l'URL, changer les balises "titre" et "description" ce qui donne un bon résultat pour le référencement même sans URL rewriting.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 juil. 2009, 01:55

Vi mais ça tu peux aussi le faire en faisant un include de header et footer dans chaque script. Sauf qu'avec un script dédié par page, tu peux exploiter l'url directement (et tant qu'on y est dans les différences, tu n'es pas obligé de gérer une liste des pages que le visiteur a le droit d'inclure ou pas ;))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 14 Messages

15 juil. 2009, 16:36

Bonjour,

Je m'immisce dans la conversation, mais j'aimerais comprendre une chose : lorsque l'on a (ce que je me prépare à faire pour mon site, actuellement sans php) un index.php avec des includes pour afficher les différentes parties, l'indexation dans les moteurs de recherche se fait moins bien ? C'est à dire ?
Par exemple, pour mon site en html, je ne me suis pas cassé la tête concernant les balises "description" et "keywords" : c'est la même chose à peu près sur toutes mes pages. Seule la balise "titre" change...

Donc, aurais-je dans ce contexte une différence d'indexation si je passe par index.php pour l'affichage des pages?

C'est probablement une question très primaire, mais une petite réponse simple sera la bienvenue...

ViPHP
AB
ViPHP | 5818 Messages

15 juil. 2009, 19:08

Tu auras des adresses différentes pour chaque page ex: index.php?page=1 et index.php?page=2 par exemple donc ces pages seront bien référencées.
Ce que veux dire Ryle c'est que si l'URL de chaque page porte un nom signifiant cela fait un critère de plus pour la recherche.
Par rapport aux balises "titre" et "description" je pense que c'est secondaire, mais si l'on veut tout optimiser on peut faire ça en plus.
Enfin même avec une bonne optimisation sur ces critères il y a surtout le contenu des pages qui compte, le nombre de lien externe vers ton site, la fréquentation etc.

Mammouth du PHP | 2937 Messages

15 juil. 2009, 19:15

Tu auras des adresses différentes pour chaque page ex: index.php?page=1 et index.php?page=2 par exemple donc ces pages seront bien référencées.
Ce que veux dire Ryle c'est que si l'URL de chaque page porte un nom signifiant cela fait un critère de plus pour la recherche.
Par rapport aux balises "titre" et "description" je pense que c'est secondaire, mais si l'on veut tout optimiser on peut faire ça en plus.
Sans oublier l'URL rewriting, ou l'art de faire croire qu'il y a autant de fichiers HTML statiques que de pages (page-1.html en guide d'index.php?page=1). Mais, ce n'est pas fondamental pour le référencement, surtout si les URLs ne comportent qu'un seul paramètre (en revanche, ça devient vite recommandable dès qu'il y en a au moins trois).
Enfin même avec une bonne optimisation sur ces critères il y a surtout le contenu des pages qui compte, le nombre de lien externe vers ton site, la fréquentation etc.
Surtout, en plus du contenu, le nombre de liens en dur (ou, à la limite, avec une redirection 301) provenant de pages abordant des thématiques proches et dont l'intitulé contient des mots-clés pertinents sur ton site.

ViPHP
AB
ViPHP | 5818 Messages

15 juil. 2009, 20:15

Tu auras des adresses différentes pour chaque page ex: index.php?page=1 et index.php?page=2 par exemple donc ces pages seront bien référencées.
Ce que veux dire Ryle c'est que si l'URL de chaque page porte un nom signifiant cela fait un critère de plus pour la recherche.
Par rapport aux balises "titre" et "description" je pense que c'est secondaire, mais si l'on veut tout optimiser on peut faire ça en plus.
Sans oublier l'URL rewriting, ou l'art de faire croire qu'il y a autant de fichiers HTML statiques que de pages (page-1.html en guide d'index.php?page=1). Mais, ce n'est pas fondamental pour le référencement, surtout si les URLs ne comportent qu'un seul paramètre (en revanche, ça devient vite recommandable dès qu'il y en a au moins trois).
Oui justement Ryle parlait d'URL rewirting un peu plus haut :wink:

Pour le nombre de paramètres, je pense que tu as une info qui date un peu si tu veux dire que google ne peut référencer que jusqu'à trois paramètres dans l'URL. Effectivement on préconisait surtout l'URL rewriting il y a quelques années parce que Google était limité à ce nombre mais cela a changé depuis et de ce fait l'URL rewriting a perdu une partie de son intérêt.

Mammouth du PHP | 2937 Messages

15 juil. 2009, 21:05

Pour le nombre de paramètres, je pense que tu as une info qui date un peu si tu veux dire que google ne peut référencer que jusqu'à trois paramètres dans l'URL. Effectivement on préconisait surtout l'URL rewriting il y a quelques années parce que Google était limité à ce nombre mais cela a changé depuis et de ce fait l'URL rewriting a perdu une partie de son intérêt.
En fait, plus il y a de paramètres d'URL, plus la tâche est ardue pour les robots des moteurs de recherche, ce qui ne veut pas dire que c'est impossible à référencer. ;)

Après, reste le problème de l'ordre d'affichage des paramètres, ce qui peut provoquer du duplicate content (même si ce n'est pas forcément pénalisant, du moment qu'on reste dans un même domaine).

Fin de la parenthèse.