Bonjour à tous et à toutes !
Je vous expose mon problème :
Je sirotais tranquillement un verre de grenadine devant le tuto "Créer un site de A à Z : jour 2" quand tout à coup quelque chose d'horrible arriva !
Bon, plus sérieusement, j'en était à créer le fichier " Request.php" :

<?php
class Request{

    public $url; //URL
    function __construct(){
        $this->url = $_SERVER'PATH_INFO']; // Le problème est là !
    }
}
?>

Je retourne dans mon " Dispatcher.php" :

<?php
class Dispatcher{
    var $request;

    function __construct(){
        $this->request = new Request();
           echo $this->request->url; // Je mets toute l'URL dans un echo.
}
}
?>

Ensuite, je vais dans Google Chrome (j'utilise Wampserver 2.1) et j'actualise, ZUT :

Notice: Undefined index: PATH_INFO in C:\wamp\www\site\core\Request.php on line 8

J'ai pensé alors avoir une erreure dans mon code mais j'ai ensuite essayé avec :

$this->url = $_SERVER'SCRIPT_NAME']; //Dans le fichier "Request.php"

Et cela m'a bien renvoyé :

/site/webroot/index.php

C'est comme si le PATH_INFO n'était pas reconnu par mon WAMPSERVER...

Merci pour votre aide ! ;D

13 réponses


Dimer47
Réponse acceptée

Solution -->

$req = str_replace(BASE_URI."/", "", $_SERVER'REQUEST_URI']);

Je t'invite à tester la solution suivante proposée par Grafikart et approuvé dans un sujet similaire sur le forum ( http://www.grafikart.fr/forum/topic/2428):
"Pour les problèmes liés à PATH_INFO c'est un réglage d'Apache et de PHP.
Pour Apache dans le httpd.conf ajoute AcceptPathInfo On
Pour PHP dans le php.ini décommente ou ajoute cgi.fix_pathinfo=1

Si tu es sur un mutualisé active PHP 5.3"

Merci pour ta réponse rapide, mais, je ne sais pas ou placer ces ajouts dans les fichiers... Merci !

Pour le php.ini, fais une recherche sur cgi.fix_pathinfo et tu devrais trouver un paragraphe qui lui est destiné. Fais le remplacement suivant :

;cgi.fix_pathinfo=0 //avant
cgi.fix_pathinfo=1 //apres

Pour le httpd.conf (je ne suis pas sûr de moi pour cette partie), fais une recherche sur AddType application/x-httpd-php puis ajoute

AcceptPathInfo On

Moi c'est pareil et en modifiant cela rien n'a changer.
Donc si quelqu'un est dans le même cas j'ai trouver une solution.J'ai utiliser REQUEST_URI et BASE_URL pour récuperer le chemin de l'utilisateur.

<?php
$req = $_SERVER'REQUEST_URI'];
$req = str_replace(BASE_URL , "" , $req );
?>

Voila en espérant que sa aide quelqu'un ^^

Un TRES grand merci à toi Dimer47, tout fonctionne parfaitement ;-)

@Kalagan
merci pour code ,j'étais bloquée là depuis un moment :)

Extra, merci à tous : sujet fermé ! ^^

Salut! Juste attirer votre attention c'est pas $_SERVER'SCRIPT_NAME'] mais plutot $_SERVER['SCRIPT_NAME']

Ca marche pas..

@Silvère stOne +1, personne ne l'a vu ? Alors que c'est la première chose qui m'a sautée aux yeux !! Sérieusement les gars c'est grave là...

@Cyprien G tu sais je pense qu'il a fini sa grenadine maintenant :)