PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 08-10-2009 11:24:12

Pommy
Membre
Inscription : 08-10-2009
Messages : 2

Mentu et content Dans des includes

Bonjour,

Voila j'ai su le faire un jour mais pas moyen de me rappeler le code de ce qui va suivre....


J'ai une page index.php dedans, deux includes. L'un pour le menu et l'autre pour le contenu.

Afin que se soit toujours l'index qui soit appelé je cherche a mettre des liens sur le menu qui rappelle l'index
Dans mon souvenir, je mettait un truc du style: <a href="index.php?page=page1.php">accueil</a> sur le menu
et dans l'index, sur le l'include du content ben un code qui disais que la page page1 etait le liens page1.php par exemple et ce en faisant une boucle

bon c'est pas clair je le conçois smile
Mais si quelqu'un pouvais me comprendre et me donner un exemple du code correct ou une solution altetrnative ca m'aiderais beaucoup

Merci

Hors ligne

#2 08-10-2009 13:47:05

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : Mentu et content Dans des includes

Bonjour,

L'idée est là wink
Cependant le lien que tu présente a un vrai problème de sécurité:

<a href="index.php?page=page1.php">

Tu donne l'impression que tu veux inclure le fichier "page1.php" ce qui est fortement déconseillé pour la simple et bonne raison que l'utilisateur qui vient pourrait comme ça demander à inclure n'importe quel fichier...

Voilà pour la note de sécurité. Maintenant ce qu'il faut que tu fasses pour rester simple :
A la place de ton "page1.php" dans ton lien tu vas mettre un de page genre news, contact, inscription ce qui donne ceci :


<a href="index.php?page=news">
<a href="index.php?page=contact">
<a href="index.php?page=inscription">
 

Et dans la page index.php tu vas mettre le petit bout de code suivant :


<?php
if(isset($_GET['page']) && !empty($_GET['page']))
{
    switch($_GET['page'])
    {
        case 'news':
            $sFileToInclude = 'article_breves.php';
            break;
        case 'contact' :
            $sFileToInclude  = 'formulaire_contact.php';
            break;
        case 'inscription' :
            $sFileToInclude = 'formulaire_inscription.php';
            break;
        default:
            $sFileToInclude = 'accueil.php';
    }
}
else
{
    $sFileToInclude = "acceuil.php";
}

include ($sFileToInclude);
?>
 

Voilà il faut faire ça avec un switch wink


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#3 08-10-2009 14:56:17

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Mentu et content Dans des includes

Saluton,
Ou avec un tableau associatif.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#4 08-10-2009 15:02:11

Pommy
Membre
Inscription : 08-10-2009
Messages : 2

Re : Mentu et content Dans des includes

Merci Maskime.

En effet c'étais ce que je cherchais, tu dis que c'est pas ce qu'il y a de mieux?

Il existe une solution meilleure?

Et c'est quoi le tableau associatif? smile

J'aimerais bien que ca tienne la route, alors tant cas faire, autant bien faire direct smile

Hors ligne

#5 08-10-2009 15:21:15

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Mentu et content Dans des includes

<?php
$page=array('news'=>'article_breves.php',
            'contact'=>'formulaire_contact.php',
            'inscription'=>'formulaire_inscription.php');
if(isset($_GET['page']) && in_array($page,$_GET['page'])){
    include $page($_GET['page']));
    }
else{
    include'acceuil.php';
    }

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#6 08-10-2009 15:26:41

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : Mentu et content Dans des includes

Hello,

Un tableau associatif veut dire que pour une clé dans un tableau tu associe une valeur.
On peut refaire le code que j'ai posté en premier avec celui là en utilisant un tableau associatif :


<?php
if(isset($_GET['page']) && !empty($_GET['page']))
{
    $aPageList = array();
    $aPageList['news'] = 'article_breves.php';
    $aPageList['contact'] = 'formulaire_contact.php';
    $aPageList['inscription'] = 'formulaire_inscription.php';

    if(array_key_exists($_GET['page'], $aPageList))
    {
        $sFileToInclude = $aPageList[$_GET['page']];
    }
    else
    {
        $sFileToInclude = 'acceuil.php';
    }
}
else
{
    $sFileToInclude = 'acceuil.php';
}

include($sFileToInclude);
?>
 

Voilà pour le code avec le tableau associatif. C'est un truc utilisé assez fréquemment et je pense que c'est pour ça que MK à pointer du doigt cet outil wink

Le truc qu'il faut que tu retiennes dans tout ça c'est la règle d'or suivante : "Il ne faut jamais faire confiance à l'utilisateur !"
Toutes les entrées qui peuvent être modifiées par l'utilisateur (comme l'Url par exemple) doivent être soumises à un contrôle de ton coté.

Dans ton cas ça consiste à vérifier que le contenu de $_GET['page'] ne contient pas quelque chose que tu n'as pas prévu.


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#7 09-10-2009 10:37:00

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : Mentu et content Dans des includes

Je met ici ce que tu m'as envoyé en mail wink

Pommy a écrit :

J'ai fait comme tu me l'as dis sur le post du forum mais je dois pas être douée smile

Ça me dit ceci:

Warning: include(acceuil.php) [function.include]: failed to open stream: No such file or directory in F:\DEVELOPPEMENT\EasyPHP 3.0\www\guetteurs\index.php on line 66

Warning: include() [function.include]: Failed opening 'acceuil.php' for inclusion (include_path='.;F:/DEVELOPPEMENT/EasyPHP 3.0\php\includes') in F:\DEVELOPPEMENT\EasyPHP 3.0\www\guetteurs\index.php on line 66

la ligne 66 dit ceci:  include($sFileToInclude);


Sinon autre question, dans ton exemple (le derniers donné) Je ne comprend pas comment l'index sais que le liens "<a href="index.php?page=news">" c'est les news , enfin ceci $aPageList['news'] = 'article_breves.php';

dsl de t'embêter j'essaie de comprendre smile

Alors pour commencer.
Je te rappelle que je t'ai donné des exemples ^^ Je n'ai pas testé les codes que je te poste, je te donne surtout des directions il appartient à toi de comprendre leur fonctionnement et de corriger le cas échéant ce que je t'ai donné. Si tu as des erreurs que tu ne comprends pas je t'aiderai à les comprendre mais ne perds pas de vu que je n'ai pas testé ce que je poste ok ?! smile

Pour ton erreur :
Si tu as un warning sur le include du fichier 'acceuil.php' c'est que tu dois pas avoir de fichier qui a ce nom là ou bien qu'il est pas au bon endroit wink

Ensuite vis à vis de ta question sur comment est ce que l'index sait que 'news' correspond au fichier 'article_breves.php'.
Ceci m'indique que tu ne sais pas ce qu'est un tableau (appelé en anglais array).
Donc petit cours sur les tableaux :
Dans le monde de la programmation tout est une histoire de contenu et de contenant. Une variable peut se comparer avec un verre rempli de vin. Le verre c'est la variable (le contenant) et le vin c'est le contenu (les datas).
Un tableau peut se comparer à une commode avec des tiroirs. Tu peux mettre pleins de choses dans un tableau.
Le tableau associatif correspond à une commode sur laquelle on aurait mis des étiquettes (qui s'appellent 'index' dans le monde de la programmation et 'key' en anglais) sur les tiroirs, sachant ça :


$aPageList = array();
$aPageList['news'] = 'article_breves.php';
$aPageList['contact'] = 'formulaire_contact.php';
$aPageList['inscription'] = 'formulaire_inscription.php';
 

Les lignes ci-dessus indique que :
J'ai déclaré une commode '$aPageList'.
Dans le tiroir dont l'étiquette est 'news' je lui demande de mettre le texte 'article_breves.php'
Dans le tiroir dont l'étiquette est 'contact' je lui demande de mettre le texte 'formulaire_contact.php'
Dans le tiroir dont l'étiquette est 'inscription' je lui demande de mettre le texte 'formulaire_inscription.php'

Aussi quand tu fais un lien genre : index.php?page=news tu dis la chose suivante au navigateur :
Je veux être envoyé sur la page index.php
Dans le tableau $_GET, créé un tiroir (et oui $_GET est un tableau aussi wink ) dont l'étiquette sera 'page' et met le texte 'news' dedans.

Dans la page index.php on récupère le contenu du tiroir que tu as créé dans ton lien : $_GET['page']
Une fois qu'on a récupéré le contenu de ce tiroir on regarde si cette étiquette existe dans le tableau qu'on a déclaré :
if(array_key_exists($_GET['page'], $aPageList))
Si elle existe on lui demande de récupérer le contenu du tiroir et de le mettre dans la variable $sFileToInclude :
$sFileToInclude = $aPageList[$_GET['page']];

Donc dans l'exemple $_GET['page'] contient 'news' donc la ligne ci-dessus revient à dire :
$sFileToInclude = $aPageList['news'];
Or au début du script j'ai dit que le tiroir 'news' de la commode $aPageList contient le texte : 'article_breves.php'. Donc au final on obtient :
$sFileToInclude = 'article_breves.php';

Et à la fin on lui demande d'inclure le fichier :
include($sFileToInclude);
Ce qui dans notre exemple revient à dire :
include('article_breves.php');

Voilà le mécanisme qui se déroule et voilà comment est ce que la page index sait le fichier qu'elle doit inclure.
J'ai essayé d'être claire mais je pense que tu perdrais pas de temps à aller faire les tutos de phpdebutant.org et faut pas tricher hein ?! Fais les un par un et dans l'ordre wink


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#8 09-10-2009 11:00:27

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Mentu et content Dans des includes

Maskime, bravo et merci pour lui.

Quand tu dis 80% de réflexion, tu devrais dire, récursivement, 96% de réflexion, car il faut tenir compte que sur les 20% de syntaxe, il faut encore y consacrer 80% de réflexion, sur la syntaxe. wink
Par ailleurs il faut se garder de réfléchir comme un miroir, surtout aux alouettes.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 09-10-2009 13:24:24

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : Mentu et content Dans des includes

Héhé, merci MK

Je tiens à dire que je tiens cette citation de Raf.
Comme quoi même moi qui ne la connaissais pas plus que ça j'ai quand même été touché par sa gentillesse smile


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

#10 09-10-2009 13:46:56

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : Mentu et content Dans des includes

Comme quoi.. y'a des gens petit comme ça, et qui donne gros comme ça ... [Pensées à toi, Valérie]


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

Pied de page des forums