Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Przyjazne linki i PATH_INFO
desavil
post
Post #1





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

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


Witam,
Chciałem zrobić takie rozwiązanie, że w pliku .htaccess mam tylko jeden wpis:
  1. RewriteCond %{REQUEST_FILENAME} !-f
  2. RewriteCond %{REQUEST_FILENAME} !-d
  3. RewriteRule (.*) index.php/$1 [L]

A resztę już sobie przez PHP ustalam jeżeli chodzi o przyjazne linki. Zawartość pobieram za pomocą: $_SERVER['PATH_INFO'] oraz odpowiednio formatuje dane:
  1. $site_page = explode('/' ,$site_patchinfo);
  2. $site_page2 = explode('-' ,$site_patchinfo);

$site_page[0] odpowiada zawsze za includowany plik podstrony. Linki są w formie, np.
adrestrony.pl/kontakt
adrestrony.pl/newsy/12
adrestrony.pl/zarzadzaj-4312/usun
itp.

Chodzi mi o to, że mam problem w moim skrypcie z zrobieniem stron błędów (404) jeżeli dana podstrona nie zostanie odnaleziona.
Przypuśćmy ktoś wpisze:
adrestrony.pl/kontakt/costamcostam/12-12
Taki link u niego przejdzie, bo skrypt sprawdza jedynie czy plik o nazwie "kontakt" istnieje, a później do tego pliku jeżeli są potrzebne odpowiednie parametry dodatkowe to są pobierane z linka. Czy mogę jakoś zrobić, aby wyświetlać stronę błędu? Czy muszę koniecznie zdefiniować w PHP listę plików/podstron?
A może po prostu w .htaccess robić wszystkie linki, chociaż wydawało mi się w taki sposób to prostrze aby za każdym razem linka nie wpisywać, ale te strony błędów... a koniecznie chcę je mieć.

Pozdrawiam! Dziękuję za propozycje.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Lorum3
post
Post #2





Grupa: Zarejestrowani
Postów: 86
Pomógł: 5
Dołączył: 10.12.2011
Skąd: Poznań

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


Rozwiązanie w którym sprawdzasz tylko pierwszy parametr mija się z celem.

Logicznie będzie gdy pierwszy parametr będzie kontrolerem, drugi akcją i wtedy również sprawdzasz czy dana akcja istnieje. W przypadku braku czegokolwiek wszystko przekierowujesz na stronę główną, bądź 404.

Ten post edytował Lorum3 1.05.2012, 17:48:32
Go to the top of the page
+Quote Post
desavil
post
Post #3





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

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


Mógłbym prosić o jakiś przykład takiego kontrolera, lub poprawę poniższego?
Chodzi o to, abym mógł w nim dzielić zarówno przez "/" oraz "-"

Natomiart strony errorów będą miały taką postać:
adrestrony.pl/error-404
adrestrony.pl/error-500

error jest to kontroler, a numer po "-" akcją.

Na chwilę obecną wymyśliłem takie coś:
  1. $tpl_site = 'site.tpl';
  2. $site_patchinfo = $validate -> isUrl_patchinfo($_SERVER['PATH_INFO']);
  3. if(!empty($site_patchinfo)){
  4. $site_page = explode('/' ,$site_patchinfo);
  5. $site_page2 = explode('-' ,$site_patchinfo);
  6. $site_page2_id = $validate -> isNumber($site_page2[1]);
  7. if($site_patchinfo != false && file_exists(SITE_PAGES_DIR.basename($site_page[1]).'.php') && file_exists(TPL_TEMPLATE_DIR.basename($site_page[1]).'.tpl') && $site_page[1] != 'index'){
  8. if($site_page2[0] == 'error' && !empty($site_page2_id)){ $tpl_page = 'includes/error'; $tpl_site = 'error.tpl'; }else{ $tpl_page = $site_page[1]; $tpl_template = $site_page[1]; }
  9. }else{ header('Location: /error-404'); }
  10. }else{ $tpl_template = 'index'; }


Ten post edytował desavil 2.05.2012, 19:06:17
Go to the top of the page
+Quote Post

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: 25.08.2025 - 06:49