Vous n'êtes pas identifié(e).
Pages :: 1
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
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
Bonjour,
L'idée est là
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 :
Et dans la page index.php tu vas mettre le petit bout de code suivant :
include ($sFileToInclude);
?>
Voilà il faut faire ça avec un switch
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
Hors ligne
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
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?
J'aimerais bien que ca tienne la route, alors tant cas faire, autant bien faire direct
Hors ligne
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
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 :
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
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
Hors ligne
Je met ici ce que tu m'as envoyé en mail
J'ai fait comme tu me l'as dis sur le post du forum mais je dois pas être douée
Ç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
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 ?!
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
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 :
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 ) 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
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
Hors ligne
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.
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
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
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
Hors ligne
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
Pages :: 1