Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Przekierowuje wszystko
Forum PHP.pl > Forum > PHP
felixk
Witam, udało mi się coś tam poprawić z tym przekierowaniem tak jak jeden z forumowiczów pokazał, ale w jego przykładzie nie było wyrzucania komunikatu przy istniejącym pliku. Coś tam skleciłem, ale teraz kurcze przekierowuje wszystko tzn. moment w którym nie ma zmiennej oraz błędny adres (tak ma być) oraz dodatkowo poprawne adresy

  1. index.php?strona=yyy // chodzi o to, by wszystkie adresy wpisywane, które nie mają fizycznych odpowiedników w plikach były przekierowywane
to przekierowuje czyli niby OK, ale
  1. index.php?strona=onas
też przekieruje a nie powinien

A oto sprawca zamieszania:

  1.  
  2. $strona=$_GET["strona"];
  3.  
  4. if(!isset($strona)) {
  5. header('Location: <a href="http://www.xx.pl/glowna,strona.html&#39%3b%29;" target="_blank">http://www.xx.pl/glowna,strona.html');</a>
  6. }
  7. else if
  8. (file_exists("$strona.php") && is_file("$strona.php"))
  9. {
  10. include("$strona.php");
  11. }
  12. else
  13. {
  14. header('Location: <a href="http://www.xxx.pl/glowna,strona.html&#39%3b%29;" target="_blank">http://www.xxx.pl/glowna,strona.html');</a>
  15. }


Pomocy. Z góry dziękuję
jacekkobus
Latwiej i lepiej bedzie to wygladac jesli uzyjesz switch'a. Bo taki kogel mogel masz.
Poza tym, dobrze jest znac parametry ktore maja do nas dojsc. Bo widze, ze nie filtrujesz GET'a i w zmienna $strona moglbym Ci wstawic jakas sciezke do calkowicie innego pliku ...

  1. switch( $_GET['strona'] ){
  2.  
  3. case 'param1':
  4. header(...);
  5. break;
  6.  
  7. case 'param2':
  8. header(...);
  9. break;
  10.  
  11. default:
  12. // domyslnie, jezeli zaden parametr nie pasuje
  13. header(...);
  14. }
felixk
Cytat(jacekkobus @ 19.01.2010, 22:57:52 ) *
Latwiej i lepiej bedzie to wygladac jesli uzyjesz switch'a. Bo taki kogel mogel masz.
Poza tym, dobrze jest znac parametry ktore maja do nas dojsc. Bo widze, ze nie filtrujesz GET'a i w zmienna $strona moglbym Ci wstawic jakas sciezke do calkowicie innego pliku ...

[PHP] pobierz, plaintext
  1. switch( $_GET['strona'] ){
  2. case 'param1':
  3. header(...);
  4. break;
  5. case 'param2':
  6. header(...);
  7. break;
  8. default:
  9. // domyslnie, jezeli zaden parametr nie pasuje
  10. header(...);
  11. }
[PHP] pobierz, plaintext


Mógłbyś mi na podstawie moje kodu wypełnić pola case, bo ja tego nie kumam i jak mam sie potem do tego odwoływać?
jacekkobus
Zalozmy, ze masz na serwerze pare podstron, ktore chcesz wczytac.

Np.:

artykuly.php, newsy.php, komentarze.php.
(zakladam, ze to nie sa pliki dynamiczne, wiec wiesz, ze tam sa i nie musisz robic file_exists)

Robisz to wowczas tak:

  1. // Przyklad adresu: www.example.com/skrypt.php?strona=artykuly
  2. // Przyklad adresu: www.example.com/skrypt.php?strona=newsy
  3. // Przyklad adresu: www.example.com/skrypt.php?strona=komentarze
  4.  
  5. $podstrona = $_GET['strona'];
  6. $plik = $podstrona.'.php';
  7.  
  8. switch( $podstrona ){
  9.  
  10. case 'artykuly':
  11. // dolacza plik artykuly.php
  12. include($plik);
  13. break;
  14.  
  15. case 'newsy':
  16. // dolacza plik newsy.php
  17. include($plik);
  18. break;
  19.  
  20. case 'komentarze':
  21. // dolacza plik komentarze.php
  22. include($plik);
  23. break;
  24.  
  25. default:
  26. // domyslnie, jezeli zaden parametr nie pasuje
  27. header('Location: <a href="http://example.com&#39%3b%29;" target="_blank">http://example.com');</a>
  28. }


Tak jest bezpieczniej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.