Integration menu unique

Résolu
Sylvanus666 Messages postés 6 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 14 avril 2010 - 12 avril 2010 à 20:30
roymatthieu Messages postés 112 Date d'inscription jeudi 31 août 2006 Statut Membre Dernière intervention 3 février 2011 - 14 avril 2010 à 22:04
Bonjours a toute et a tous.

Je viens vous exposer un soucie que je rencontre et j'espère que vous pourrez me donner quelque conseil voir même une solution

En effet j'ai créer un site ( je ne sais pas si j'ai le droit de donner le lien), cependant je construit énormément de pages différentes par obligation.

J'en viens donc a mon soucie, je souhaite intégrer un menue unique a toute ses pages et changeable extérieurement. En gros ca pourrait m'éviter de retourner sur toute mes pages a chaque fois que je veux modifier un lien dans le menu ce qui est extrêmement long.

Y a t-il un moyen quelconque de faire ceci ? grâce a un fichier php peut être ?

Merci de vos réponses les plus brèves, mon projet étant en constante évolution et mon besoin d'organisation de plus en plus grand.

Bonne soirée.

Cordialement,

11 réponses

Sylvanus666 Messages postés 6 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 14 avril 2010
13 avril 2010 à 11:56
Merci pour cette réponse qui convient parfaitement a mon cas de figure :)

Cependant il me reste un autre soucie, a présent que j'ai creer mon fichier php, ca fonctionne, cependant a chaque répertoire ou se situe mes pages je dois le recréer

En effet quand je donne le chemin a suivre dans mes pages, il part du dossier ou se trouve cette meme page comme racine.

Pour : <?php include('menu/menu.php'); ?>

il va chercher dans le dossier menu mais si je ne suis pas dans le même répertoire il cherche un dossier menu dans celui ci au lieu de prendre celui qui se trouve a la racine

Je veut dire par la qu'il ne va pas a la racine propre du site ce qui m'oblige a modifier tout mes menu.php si je veut modifier l'ensemble des menu, c'est moins contraignant que toute les pages mais cela reste néanmoins un inconvénient

j'espère que j'ai été assez clair :)

Une solution ?
3
Sylvanus666 Messages postés 6 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 14 avril 2010
14 avril 2010 à 17:18
Desolée du double post, la solution qu ej'ai noter au dessu ne fonctionne pas car il ya un probleme de droits au niveau de l'hebergeur

J'ai trouver une autre solution qui fonctionne qui consiste

<?php include('../../menu/menu.php'); ?>

Je met autant de "../" qu'il ya de sous repertoir et il arrive a trouver mon menue

Merci pour ton aide :)
3
roymatthieu Messages postés 112 Date d'inscription jeudi 31 août 2006 Statut Membre Dernière intervention 3 février 2011 1
13 avril 2010 à 10:26
Yep...

Php est la bonne solution

A chaque endroit ou doit s'afficher ton menu tu remplaces les lignes de code html par <?php include('repertoire/fichier.php'); ?>

dans fichier.php tu écris soit :

<?php ?>

Ton code html

soit

<?php

echo "

Ton code html

";

?> (dans ce cas les ' doivent être remplacés par des \')

regarde ici pour l'utilisation de la fonction "include".

J'espère avoir su t'aider.

Matt
0
roymatthieu Messages postés 112 Date d'inscription jeudi 31 août 2006 Statut Membre Dernière intervention 3 février 2011 1
13 avril 2010 à 14:18
Dans ce cas de figure, je vais te donner une solution qui fonctionne mais qui n'est pas la plus indiquée.

Car en théorie on dois utiliser un chemin relatif, c'est mieux...

Mais tu vas utiliser un chemin "en dur" depuis la racine du serveur.

Dans fichier.php à la première ligne (après <?php ) tu écris

exit($_SERVER['DOCUMENT_ROOT']).dirname($_SERVER['PHP_SELF']).'/');

tu vires les / en trop et tu colles le chemin obtenu à chaque :

<?php include('chemin obtenu + nom du fichier'); ?>

Ca devrait fonctionner...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sylvanus666 Messages postés 6 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 14 avril 2010
14 avril 2010 à 10:25
qu'entend tu par chemin obtenue ?

sous quel forme est t-il ?
0
roymatthieu Messages postés 112 Date d'inscription jeudi 31 août 2006 Statut Membre Dernière intervention 3 février 2011 1
14 avril 2010 à 12:13
Yep,

Dans le fichier qui contient le menu à la première ligne (après <?php ) tu écris :

exit($_SERVER['DOCUMENT_ROOT']).dirname($_SERVER['PHP_SELF']).'/');

Dans ton navigateur tu tapes l'adresse de ton fichier php qui contient le menu.

Un chemin va apparaitre sur la page blanche :

exemple -> homez/www/monsite/menu/

Il s'agira du chemin absolu depuis la racine du serveur, jusqu'au répertoire qui contient le fichier qui contient le menu.

Tu vires les / en trop si il y en a et ensuite tu copie-colles le chemin obtenu à chaque :

<?php include('chemin obtenu + nom du fichier'); ?>

soit dans mon exemple :

<?php include('homez/www/monsite/menu/menu.php'); ?>

Bien à toi.
0
Sylvanus666 Messages postés 6 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 14 avril 2010
14 avril 2010 à 15:38
J'obtient ceci en guise de message d'erreur

Warning: include() [function.include]: open_basedir restriction in effect. File(/usr/local/apache/htdocs/menu/menu.php) is not within the allowed path(s): (/home/:/usr/lib/php:/tmp) in /home/a1189125/public_html/Test.php on line 16

est-ce un probleme de droits ?
0
roymatthieu Messages postés 112 Date d'inscription jeudi 31 août 2006 Statut Membre Dernière intervention 3 février 2011 1
14 avril 2010 à 16:43
Salut.

"open_basedir restriction in effect" y ressemble beaucoup...

alors tu peux toujours essayer de mettre mais je ne suis pas sur que cela marche...

<?php include('http://monsite.com/reprtoire/menu.php'); ?>

Sinon tu peux toujours lire ceci... http://www.php-astux.info/chemins-relatif-absolu.php

Avec ça et la connaissance de l'arborescence ton site, tu devrais y arriver seul.

Sinon je te donnerai mon adresse mail par mp et tu m'enverras un zip de ton site...

Bien à toi.

Matt.
0
Sylvanus666 Messages postés 6 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 14 avril 2010
14 avril 2010 à 17:04
Je me ballader sur le forum et j'ai trouver ceci

include ($_SERVER["DOCUMENT_ROOT"].'/admin/connexion.php');

Ca peut marcher ? Je vais tester :)
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
14 avril 2010 à 17:54
Salut,

(je ne sais pas si j'ai le droit de donner le lien)

Sisi, tu peux

Je pense qu'il y a un problème de logique dans la solution retenue.
Pourquoi ne pas faire une page index.php qui appellerait les pages demandées.
Un truc du style :
index.php
<html>
<head>
patatipatata
</head>

<?php
include 'menu.php';
include $_GET['pageDemandee'].'.php';
include 'pied_de_page.php';
?>

</html>

Tu construis ensuite tes autres pages en ne mettant que le contenu (cad pas de balises <html>, , etc ... qui sont déjà présentes dans index.php) Pas besoin ici de mettre d'include puisque c'est index.php qui s'en chargera.

Tu construis ensuite tes liens de cette manière :
[index.php?pageDemandee= trucmuche trucMuche]

Ca te permettrait un découpage efficace très simple à mettre en place.
Bien sur il ne s'agit là que d'une trame pour présenter l'idée, il te faudra peaufiner :
- test de l'existence de la page demandée et retour à l'accueil si inexistante
- urlencode / urldecode sur la valeur de pageDemandee passée dans l'url
- url rewriting pour faire "plus beau mieux" auprès des utilisateurs et des moteurs de recherche.

ATTENTION :
Ce type de structure est très pratique mais peut occasionner des problèmes de sécurité, par le fait que tu laisses la possibilité à l'utilisateur d'appeler la page qu'il souhaite (en modifiant simplement l'URL, par ex : http://tonsite/index.php?pageDemandee =administrationDuSite)
C'est par ailleurs très simple à sécuriser, par exemple en définissant les pages auxquelles l'utilisateur peut avoir accès :
index.php
<html>
[...]

<?php
// pages autorisées
$pagesAutorisees = array(
'trucmuche',
'page1',
'page2',
'page10'
);
if (!in_array($_GET['pageDemandee'], $pagesAutorisees)) include 'accueil.php'; else include $_GET['pageDemandee'];
?>
[...]
</html>

Ainsi, si le serveur reçoit une valeur de "admin" il redirigera sur l'accueil et affichera la page page2.php s'il reçoit page2


Cordialement,


Kohntark -
0
roymatthieu Messages postés 112 Date d'inscription jeudi 31 août 2006 Statut Membre Dernière intervention 3 février 2011 1
14 avril 2010 à 22:04
@Sylvanus666

Content de t'avoir mis sur la voie...

Tu utilises un chemin relatif...

Content que ton problème soit résolut.

A bientôt.
0
Rejoignez-nous