trouver le nom de la page courante

Eléphanteau du PHP | 17 Messages

13 févr. 2007, 10:12

Cette question à peut-être déjà été posée ici, mais la fonction recherche n'ayant rien donné (ou alors je suis une vraie bille :lol: ...) je la (re)pose ...

Est-il possible de récupérer le nom de la page php courante et si oui, comment?

Je m'explique : pour mon menu, j'aimerai utiliser un include. Le problème est que le contenu du menu peut changer en fonction de la page sur laquelle se trouve l'utilisateur... Je m'étais donc dis que si je pouvais récupérer le nom de la page courante, je pourrais faire un switch ...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

13 févr. 2007, 10:32

Regarde dans les variables prédéfinies $_SERVER

Eléphanteau du PHP | 17 Messages

13 févr. 2007, 11:22

OKi merci, je vais voir çà de suite ....

Eléphanteau du PHP | 17 Messages

13 févr. 2007, 12:25

Et bien merci beaucoup, j'ai trouvé : c'est $_SERVER['REQUEST_URI'] qui semble être la solution. J'en ai profité pour créer une ch'tite fonction pour récuperer exactement ce que je recherche :
function getPageName($page)
{
          $page=pathinfo($page);
          $pgeName=$page['basename'];
          return $pgeName;
}
Alors pour l'utiliser il suffit d'inclure dans chaque page à vérifier :
$page=$_SERVER['REQUEST_URI'];
et ensuite de faire le test en fonction de ce qu'on veut faire (redirection, modification d'un menu, ....

Et comme c'est ma première fonction, j'en suis très fier :D même si elle n'est certainement pas parfaite (j'ai qu'une semaine de php dans les jambes aussi :) ).

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

13 févr. 2007, 12:35

Personnellement j'ai une préférence pour $_SERVER['PHP_SELF'] ou $_SERVER['SCRIPT_NAME'] :)

J'ai peur qu'avec le REQUEST_URI, tu puisses avoir des problème en cas de redirection ou d'url_rewriting... l'url ne correspondra peut être pas au nom du script (à confirmer)

A noter que la fonction basename() te permet d'extraire juste le nom du fichier en supprimant tout le chemin :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

13 févr. 2007, 13:08

Et comme c'est ma première fonction, j'en suis très fier :D même si elle n'est certainement pas parfaite (j'ai qu'une semaine de php dans les jambes aussi :) ).
Alors prends l'habitude dès maintenant de tester les paramètres que ta fonction récupère ;)

Eléphanteau du PHP | 17 Messages

14 févr. 2007, 08:32

Bien vu Ryle, effectivement, j'ai vu par après que çà ne fonctionnait pas aussi bien que je ne le croyais ... alors j'ai résolu le problème comme autrement :

$page=$_SERVER['SCRIPT_FILENAME'];
$page=basename($page,".php");
Ma fonction est donc passée à la trappe. :)
J'ai préféré utiliser SCRIPT_FILENAME car j'avais un comportement bizarre avec PHP_SELF et SCRIPT_NAME : la redirection s'effectuait correctement vers la bonne page mais le menu ne s'affichait pas correctement (elle affichait le menu de la page précédente).

En définitive, j'ai opté pour cette méthode avec un Require_once sur le début de chaque page à tester.

D'autre part, j'ai également remarqué qu'un simple switch ne fonctionnait pas dans mon fichier include, j'ai donc du utiliser in if...elseif, un peu plus long et moins "élégant" à mon goût, mais qui à l'avantage de fonctionner ... :)