8722 sujets

Développement web côté serveur, CMS

Bonjour,

Voulant récupérer le nom de la page dans laquelle on est, j'ai trouvé qu'on pouvait faire :
<?php define('pagencours', $_SERVER['PHP_SELF'], true) ?> 


Après quoi, on peut à sa guise utiliser la variable ainsi définie :
<b>Je suis dans la page : <?php echo pagencours ?></b>


Ce que j'aimerais, c'est avoir uniquement la fin de la variable (par exemple "home.php"), et je ne crois pas que $_SERVER fournisse cette valeur.

Comment passer de la forme "complète" à la forme "réduite" ?
Merci d'avance,
Paps
Normalement si, $_SERVER['PHP_SELF'] contient juste la fin, enfin pour être précis :

a écrit :
Le nom du fichier du script en cours d'exécution, par rapport à la racine web. Par exemple, $_SERVER['PHP_SELF'] dans le script situé à l'adresse http://www.monsite.com/test.php/foo.bar sera /test.php/foo.bar.


donc tout dépend si ta page en cours est dans un sous-répertoire ou non ^^
Si c'est le nom du fichier courant que tu veux tu peux faire comme ça :
echo basename(__FILE__) // ==> monfichier.php


Au passage, attention avec $_SERVER['PHP_SELF'] qui peut-être corrompu par un utilisateur malveillant. Il faut penser à sécuriser cette donnée suivant l'usage qu'on en fait.
Merci à tous les trois !

Lothindil : je maintiens, par expérience, que $_SERVER['PHP_SELF'] donne le chemin complet depuis la racine du site, donc ça ne me convient pas !

Moust : ma définition de variable étant dans un "include", "basename(__FILE__) " me donne le nom de cet include ! Ca ne colle donc pas (mais idée à retenir!).
Il faudra que j'étudie en quoi $_SERVER['PHP_SELF'] peut être source de malveillance...

Gothor : solution idoine. J'ai donc écrit :
<?php $url = $_SERVER['PHP_SELF']; 
      $reg = '#^(.+[\\\/])*([^\\\/]+)$#';
      define('onestla', preg_replace($reg, '$2', $url)); ?>


et mon problème est résolu, je peux utilser la variable "onestla" à ma guise ! Je me suis permis de copier bêtement la syntaxe de l'expression "$reg = ", il va falloir que j'épluche ça pour comprendre Smiley cligne !

Grâce à vous, j'ai fait un immense pas en avant, merci !
A la prochaine, certainement...
Paps
Tu peux utiliser la fonction basename() plutôt qu'une expression régulière.

Pour ce qui est du problème de sécurité avec PHP_SELF, ça va être dans le cadre d'attaque XSS. Smiley cligne