Me voila de retour pour vous jouer un mauvais tour!!! Donc mon probleme est le suivant: [url=http://www.archive-host.com/files/1341567/278a780c0753d8ebd7a63d6e8159bd69ef240256/ScreenShot139.bmp]Voir le Fichier : **ScreenShot139.bmp**[/url] Et le fichier Request.php ou il semblerais avoir une erreur -_-: [url=http://www.archive-host.com/files/1341569/278a780c0753d8ebd7a63d6e8159bd69ef240256/ScreenShot140.bmp]Voir le Fichier : **ScreenShot140.bmp**[/url] Si besoin d'autre chose n'hesitez surtout pas. Merci a vous!! :) ps: j'en suis a la video n°2 20min.

5 réponses


Donovan
Réponse acceptée

Il semble que PATH_INFO ne soit pas accessible (spécifié), dans tous les cas, tu ne peux peux ( doit ) pas faire confiance à ce genre de variable serveur, ou en tout cas crée toi une roue de secours,

Il est toujours bon de s'inspirer du Core de Cake pour ce genre de chose,
Pour ton problème, tu peux regarder par exemple dans Cake/Network/CakeRequest.php, la méthode _url() :

Le code adapté à ton cas :

function pathInfo() {
        if (!empty($_SERVER'PATH_INFO'])) {
            return $_SERVER'PATH_INFO'];
        } elseif (isset($_SERVER'REQUEST_URI'])) {
            $uri = $_SERVER'REQUEST_URI'];
        } elseif (isset($_SERVER'PHP_SELF']) && isset($_SERVER'SCRIPT_NAME'])) {
            $uri = str_replace($_SERVER'SCRIPT_NAME'], '', $_SERVER'PHP_SELF']);
        } elseif (isset($_SERVER'HTTP_X_REWRITE_URL'])) {
            $uri = $_SERVER'HTTP_X_REWRITE_URL'];
        } elseif ($var = env('argv')) {
            $uri = $var[0];
        }
        if (strpos($uri, '?') !== false) {
            $uri = parse_url($uri, PHP_URL_PATH);
        }
        if (empty($uri) || $uri == '/' || $uri == '//') {
            return '/';
        }
        return $uri;
    }
Donovan
Réponse acceptée

Je ne comprend pas l'utilité de tes classes, j'ai l'impression que tu es en train de re-écrire le coeur de cakePHP, tes classes ont le meme nom, fin bref.

L'idée est la suivante :

<?php 
class Dispatcher 
{
    public function __construct()
    {
        $uri = $this->pathInfo();
    }
    public function pathInfo() 
    {
        if (!empty($_SERVER'PATH_INFO'])) {
            return $_SERVER'PATH_INFO'];
        } elseif (isset($_SERVER'REQUEST_URI'])) {
            $uri = $_SERVER'REQUEST_URI'];
        } elseif (isset($_SERVER'PHP_SELF']) && isset($_SERVER'SCRIPT_NAME'])) {
            $uri = str_replace($_SERVER'SCRIPT_NAME'], '', $_SERVER'PHP_SELF']);
        } elseif (isset($_SERVER'HTTP_X_REWRITE_URL'])) {
            $uri = $_SERVER'HTTP_X_REWRITE_URL'];
        } elseif ($var = env('argv')) {
            $uri = $var[0];
        }

        if (strpos($uri, '?') !== false) {
            $uri = parse_url($uri, PHP_URL_PATH);
        }

        if (empty($uri) || $uri == '/' || $uri == '//') {
            return '/';
        }
        return $uri;
    }
}
tiiago
Auteur

Merci de ton aide :) je test tout sa demain, je te tiens au jus!

tiiago
Auteur

Re, alors dis moi se code dois remplacer celui que j'ai mi en screen? si c'est le cas et bien j'ai testé et maintenant le probleme vien d'ailleurs: [url=http://www.archive-host.com/files/1343190/278a780c0753d8ebd7a63d6e8159bd69ef240256/ScreenShot143.bmp]Voir le Fichier : **ScreenShot143.bmp**[/url] il dit que request::$url n'est pas défini: [url=http://www.archive-host.com/files/1343191/278a780c0753d8ebd7a63d6e8159bd69ef240256/ScreenShot144.bmp]Voir le Fichier : **ScreenShot144.bmp**[/url] donc voila j'ai une idée du souci mais j'ai pas envi de me perdre et de faire des betises ^^ encore merci :)

tiiago
Auteur

merci, cela a l'aire de fonctionner impec, c'est vrais que je trouve bizarre aussi, mais j'essayais de suivre le tuto a la lettre, en tout cas merci de ton aide qui se sera révélé precieuse. Bonne fin de journée a toi et bon week end