Forums Développement Multimédia

Aller au contenu

Utilisation de la fonction "Include" et AJAX

CODE Ajax JQuery EaseJs

13 réponses à ce sujet

#1 greg.42

    Ceinture Orange

  • Members
  • PipPipPip
  • 48 messages

Posté 24 August 2009 - 18:52 PM

Bonjour à tous !

Je souhaiterais obtenir des précisions quant à l'utilisation de la fonction php "Include". En effet c'est une fonction que j'utilise souvent mais je suis presque sûr de mal m'y prendre rendant mes sites beaucoup plus lourds que je ne le voudrais.
Voici mon exemple type :

Image IPB

Comme vous pouvez vous en douter, la structure du site doit toujours rester la même mis à part le cadre vert dans lequel s'affiche le contenu des pages. Jusqu'à présent je faisais autant de page que mon site en contenait plus autant de pages que j'ai de rubriques à appeler dans la zone verte... Je suis presque sûr qu'il est possible de charger mes pages sans avoir à rappeler l'intégralité de ma page mais impossible de trouver un tuto adapter...

Pourriez vous me donner un petit conseil ou m'orienter sur un bon tuto à ce sujet svp ?

#2 Eddy.vh

    Éternel apprenti.

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1194 messages

Posté 24 August 2009 - 19:06 PM

Ah ben oui, j'ai toujours entendu que le contraire est mieux et plus sécurisé...<br /><br />Dans ton cas, toutes les pages contiennent le menu, l'en-tête, le pied de page et tu ajoutes par l'include le contenu.<br /><br />Dans l'autre cas, tu as tes pages avec ton contenu et les includes pour appeler l'en-tête, le menu, le pied de page, etc.<br />De cette manière, si tu modifies le menu, tu le fais dans un seul fichier pour mettre tout ton site à jour.

Jette un œil sur cet article.

Modifié par edfred, 24 August 2009 - 19:09 PM.


#3 pbmaske

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3032 messages

Posté 25 August 2009 - 17:44 PM

Bonjour,
les includes sont très pratiques et évitent effectivement d'avoir de trop nombreuses pages et surtout permettent une maintenance plus facile.
L'exemple donné par edfred sur le site du zéro est fort pratique. Je t'invite pour alléger au mieux ton code d'utiliser la manière "dangereuse" (qui ne l'est pas si on saisi le problème), et plutôt que d'utiliser des if (qui sont lourds et pas adaptés) utiliser un switch (qui en plus permet de traiter des erreurs dans l'url en renvoyant sur la page par défaut) :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Mon super site !</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
       
    <?php
    switch($_GET['page']){
       case 'minichat':
          include("minichat.php");
       break;
       case 'news':
          include("news.php");
       break;
       case 'forum':
          include("forum.php");
       break;
       default:
          include("accueil.php");
       break;
    }    
    ?>
    </body>
 
</html>
 

De cette manière, il est impossible de profiter d'un trou de sécurité (par l'intermédiaire de cette page, car la sécurité d'un site ne s'arrête pas à ça).

Étant donné l'ambiguïté de ta dernière phrase, on peut supposer que tu veuilles avec une seule page charger différents contenu en ne rechargeant que la partie centrale, si c'est le cas il faut te tourner vers l'ajax, qui te permet de faire une requête asynchrone au serveur, récupérer des informations, puis de mettre à jour le cadre principale.
N'étant pas sûr que ce soit ce que tu veuilles, je ne m'étend pas plus là dessus :neutral:

Bonne continuation

#4 greg.42

    Ceinture Orange

  • Members
  • PipPipPip
  • 48 messages

Posté 25 August 2009 - 18:00 PM

Bonjour !

Merci à vous edfred et deuns ! J'ai lu le cours sur les includes (et j'en ai profité pour ajouter le Site du Zero à mes favoris pour le parcourir de fond en comble !) et vous confirmez ce que je pensais déjà : j'utilisais mal la fonction ! En gros jusqu'à présent je doublais le nombre de mes pages : une page "conteneur" et une page "contenu" à chaque fois (sachant que les "conteneurs" étaient identiques mis à part pour la page appelée par la fonction include).

Donc comme le suppose deuns, ce que je veux c'est que la structure de mon site ne bouge pas à l'exception du contenu (la partie verte dans mon schéma). C'est d'autant plus important dans mon nouveau site qu'une musique se lance au démarrage... et que si le site se recharge entièrement à chaque fois elle repartira du début constamment. Et c'est le risque que j'encoure avec la méthode "dangereuse" décrite plus haut, la fonction $_GET ne me dispensant pas de recharger l'intégralité de ma page.


J'ai déjà entendu parler d'Ajax mais je ne connais pas plus que ça... et j'ai déjà tellement de mal avec PHP que j'ai un peu peur de me disperser inutilement... C'est nécessaire pour ce que je veux faire ? Et est-ce abordable pour un néophyte du code comme moi ? :neutral:

#5 greg.42

    Ceinture Orange

  • Members
  • PipPipPip
  • 48 messages

Posté 26 August 2009 - 00:44 AM

Après quelques recherches complémentaires je me suis tourné vers la solution "Ajax" et c'est vraiment le top ! Merci pour le conseil deuns !

Du coup, avant de refaire tout mon site (qui contient quand même près de 60 pages) je voudrais poser une question subsidiaire : est-ce que je vais ruiner mon référencement si je ne fais mes includes que sur la page index.php alors qu'avant j'avais une page pour chaque contenu (new.php, machin.php, truc.php, etc...) ?

#6 pbmaske

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3032 messages

Posté 26 August 2009 - 08:11 AM

Citation

est-ce que je vais ruiner mon référencement
Non, non, aucun souci pour le référencement tu peux y aller à fond. Les moteurs se moquent de savoir s'il n'y a qu'une ou plusieurs pages qui génèrent un site. Et c'est d'ailleurs bien normal puisque les moteurs ne sont rien d'autres que des clients aveugles, donc à partir du moment qu'ils reçoivent du contenu... le reste ils s'en fichent.

Citation

Merci pour le conseil deuns !
de rien :neutral:

#7 Eddy.vh

    Éternel apprenti.

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1194 messages

Posté 26 August 2009 - 11:14 AM

Bonjour.

Deuns, deux questions à propos du référencement...

Je connais pas grand chose à l'AJAX mais ne risque-t'il pas par exemple de n'indexer que la page index et selon une recherche sur un sujet contenu sur une page (appelons-la) fille de mener sur justement l'index avec le contenu de l'index par défaut et non la page recherchée ?

Aussi comment serait l'URL d'une de ces pages "filles" et serait-elle référencée selon cette URL ?

#8 greg.42

    Ceinture Orange

  • Members
  • PipPipPip
  • 48 messages

Posté 26 August 2009 - 11:25 AM

Même question qu'edfred. J'ai vérifié et toutes mes pages indépendantes sont référencées alors comment feront les bots de Google pour faire la différence entre elles et le vrai index ?

#9 pbmaske

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3032 messages

Posté 26 August 2009 - 16:26 PM

Comme je l'ai dit plus tôt, un robot est un client aveugle (d'où l'importance du contenu). Partant de ce principe, il se moque que l'entrée d'un site s'appelle choucroute.html ou index.php.

Reconsidérons rapidement l'architecture client/serveur.
Client: le client est une personne physique ou théorique qui fait des requêtes au serveur, pour l'exemple celui ci ne demande qu'à afficher des pages (ce qui en soit est une requête).
Serveur: le serveur est un ordinateur sur lequel est stocké des fichiers, qui a la capacité d'interpréter des fichiers et de répondre au client.

C'est très simplifié mais pas besoin de plus pour comprendre.

Le client ne voit rien de ce qu'il se passe sur le serveur, sa seule action possible est de faire une requête via une adresse internet situé sur le serveur, pour accéder aux informations celui ci tape l'adresse dans la barre d'url de son navigateur favori. Une fois "Entrer" tapé, une requête est envoyée au serveur.

Le serveur intercepte la requête, il regarde quel fichier est demandé dans la requête, il vérifie qu'il a bien les droits de le lire et surtout d'envoyer la réponse. Il analyse donc le fichier, s'il voit dans ce fichier du code (langage serveur comme php par exemple), il l'interprète et suit les instructions dictées dans le fichier. Une fois tout le micmac fait il envoit sa réponse en HTML (même dans le cas où le fichier est inexistant par exemple, car il possède des réponses toutes faites).

Alors le navigateur intercepte la réponse, interprète l'HTML et affiche à l'écran la page.

Analysons ces deux adresses http://www.monsite.fr/index.php et http://www.monsite.f...dex.php?a=forum
Elles ne renvoient pas le même contenu, et pourtant il n'y a qu'un seul fichier derrière : index.php.
Un contenu différent + une adresse différente = une page.

Conclusion, tant qu'un robot (qui est, encore une fois, un client) voit des contenus différents via des adresses différentes (http://www.monsite.fr/index.php et http://www.monsite.f...dex.php?a=forum sont bels et bien différents) il indexe ces pages avec son petit algorithme et les différencie correctement.


Pour définitivement vous convaincre, un site :les cols des volcans (que j'ai fait :shock: ) qui utilise cette architecture. Un seul fichier index.php et plusieurs pages qui apparaissent dans google :
les cols des volcans collège
les cols des volcans enregistrement

Là où le bât blesse c'est l'ajax ^^ Ajax fait des requêtes asynchrone, c'est à dire qu'il a le droit de faire une requête sans recharger la page. Problème du coup puisque sans recharger la page (donc sans changer l'adresse) on peut changer de contenu. La superbe équation "Un contenu différent + une adresse différente = une page" n'est plus respectée. De plus comble du malheur, un robot ne sait pas interpréter le javascript (arghhhh), ce qui veut donc dire qu'un contenu changé en javascript est invisible pour les robots (damned o_O).

Alors pourquoi ajax existe t'il ?
Premièrement on a pas toujours besoin de référencer tout le site, et le contenu rapatrié n'est peut être pas très important après tout, tout du moins pour le robot.
Deuxièmement, on peut contourner ce problème, et proposer via un lien du menu qui ne charge pas le contenu en ajax, une liste des liens vers toutes les adresses disponibles sur le serveur (ou au moins celles que l'on veut référencer). C'est une navigation alternative, fort appréciée par les robots mais aussi par les personnes non voyantes, les personnes qui n'utilisent pas javascript (de gré ou de force comme dans certaines entreprises) ect...

Les problèmes que l'on rencontre avec ajax et le référencement sont à peu de choses près les mêmes que ceux que l'on a avec un site en flash. Les conseils que l'on peut trouver pour l'un, sont généralement également utilisables pour l'autre.


Voilà voilà, comme vous le constatez ces problèmes sont complexes mais méritent que l'on s'y intéresse, et Internet regorge de ressources pour les plus curieux que je vous invite fortement à parcourir !

Dans tous les cas j'espère que c'était compréhensif et pas trop barbant :!:
++

#10 greg.42

    Ceinture Orange

  • Members
  • PipPipPip
  • 48 messages

Posté 26 August 2009 - 16:49 PM

Très compréhensible et pas barbant du tout ! Merci pour le cours :shock:

J'ai examiné ton code et on utilise pas la même méthode d'Ajax.

Voici la tienne :
<a href="?a=presentation" title="Qui sommes nous">Qui sommes nous</a>

Voici la mienne :
<a href="#" onClick="ShowPage(1)">Qui sommes nous"</a>
(elle vient du site http://fr.wikibooks.org/wiki/Ajax)

Au final on obtient le même résultat sauf que mon adresse dans la barre d'url ne change jamais, elle reste toujours "index.php/#". Tu penses que ça n'influera pas du tout sur le référencement de n'avoir qu'une seule adresse pour tout le site ?

#11 greg.42

    Ceinture Orange

  • Members
  • PipPipPip
  • 48 messages

Posté 26 August 2009 - 16:55 PM

EDIT (je n'ai pas l'autorisation de modifier mon message précédent) : tu as modifié ton message avant que je ne poste le mien, répondant par la même occasion à une partie de ma question :shock: Voilà donc la limite d'Ajax ! Je pense donc que je l'utiliserai seulement en cas de besoin.

Voici mon site qui utilise des fonction "include" en-veux-tu-en-voilà : http://www.latoursombre.fr

#12 pbmaske

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3032 messages

Posté 26 August 2009 - 17:12 PM

Oui j'étais parti sur les includes seulement au départ, et l'exemple de site que j'ai donné n'utilise pas l'ajax.

Typiquement dans ton cas, je ne crois pas que ce soit nécessaire d'utiliser l'ajax. Tu ne feras gagner qu'un temps négligeable à l'utilisateur et tu t'embèteras avec des centaines de problèmes. L'ajax est utile pour recharger des petites zones du site qui importent peu aux moteurs de recherches.

#13 greg.42

    Ceinture Orange

  • Members
  • PipPipPip
  • 48 messages

Posté 26 August 2009 - 19:58 PM

Je me suis tourné vers l'Ajax pour un autre site où j'ai une musique de fond et si l'intégralité de la page se charge à chaque fois la musique repart du début... un peu gênant et la solution du pop-up ne me convient pas du tout !

#14 Eddy.vh

    Éternel apprenti.

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1194 messages

Posté 26 August 2009 - 20:10 PM

Belle explication Deuns. Je m'attendais un peu au contenu de cette dernière. @+ :shock:



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP