Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Path info vs inne rozwiązania do routingu
Inscure
post
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 4
Dołączył: 18.09.2010

Ostrzeżenie: (0%)
-----


Witam,

Do tej pory stosowałem $_SERVER['PATH_INFO'], ale jak się okazuje, nie na każdym serwerze jest ono dostępne.
Przykładowo, na jednym z serwów, z których korzystam, zamiast PATH_INFO jest ORIG_PATH_INFO, zaś na nginx nie ma obu tych indeksów.

Ciekaw jestem czego wy używacie w swoich projektach.
Myślałem na URL_REQUEST. Są jakieś przeciwwskazania?

Wymagania co do działania:
- PHP 5.2.17 lub nowsze
- serwer Apache, IIS oraz nginx
- przyzwoity wygląd linków bez korzystania z htc

Proszę o propozycję (IMG:style_emoticons/default/smile.gif)

Ten post edytował Inscure 21.06.2012, 20:13:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Inscure
post
Post #2





Grupa: Zarejestrowani
Postów: 61
Pomógł: 4
Dołączył: 18.09.2010

Ostrzeżenie: (0%)
-----


Linki mam tworzone dynamicznie dzięki implementacji odpowiedniej funkcji, którą rejestruję w systemie szablonów OPT, przez co może byc używana w plikach tpl.
Działa to mniej więcej na takiej zasadzie, że jako argumenty przesyłam nazwe kontrolera, akcję oraz parametry, a skrypt sam albo dodaje index.php do zwracanego adresu, albo nie - w zależności od wyniku metody systemowej, sprawdzającej czy mod rewrite jest załadowany.

Co do sytuacji pustej zmiennej, to oczywiście mam to uwzględnione, bo to przecież podstawowa sprawa (IMG:style_emoticons/default/smile.gif)

Potrzebna była jeszcze drobna poprawka. Ostatecznie wygląda to tak:

Kod
    protected function setEnv()
    {
        $dirname = dirname($_SERVER['SCRIPT_NAME']);
        if ($dirname === $this->_sep)
        {
            $to_replace = $this->_sep.'index.php';
        }
        else
        {
            $to_replace = array($dirname, $this->_sep.'index.php');
        }
        
        define('PATH_INFO', str_replace($to_replace, '', $_SERVER['REQUEST_URI']));
    }


Takie kwestie jak index.php czy separator jako zmienna klasy to już kwestia podejścia do sprawy, więc przyjmijmy że to pomijamy (IMG:style_emoticons/default/smile.gif)
Śmiga aż miło, niestety nie na nginx. Czyli cała praca z przepisywaniem na marne. Okazuje się, że nginx nie przyjmuje niczego co jest po pliku.
Czyli przyjmuje: /index.php ale już nie index.php/ a tym bardziej nie index.php/ctrl/act/

Chyba trzeba dla tego serwera dac tradycyjne linki: index.php?page=ctrl&action=act. Jakieś inne pomysły?


Ten post edytował Inscure 25.06.2012, 17:33:10
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 20:55