Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php?] Jak zrobic adres w formie:jakis_plik.php?cos=blabla?
Forum PHP.pl > Forum > Przedszkole
muk4
Jak zrobic adres w formie:jakis_plik.php?cos=blabla??

Dobry znacznik dałem? Bo nie wiem do którego to pytanie pasi.
Cienki1980
Dokładnie w taki sposób jak pokazałeś:
  1. <a href="jakis_plik.php?cos=blabla">link do pliku jakis_plik.php?cos=blabla</a>
muk4
Niee o to mi chodzi.

Nie chce tworzyć 50 plików i każdego zapisywać.
Pytanie jak zrobić takie coś zamiast 50 plików np.
NIE
1.php,2.php,3.php,4.php...50.php
TAK
skrypt.php?plik=1

I odtworzy mi plik 1
Istalacar
Witam
Może coś takiego:
  1. <?
  2. $tablica("pierwszy.php", "drugi.php", "trzeci.php");
  3. require($tablica[$_GET[plik]]);
  4. ?>

Jeżeli podasz http://www.adres.do/pliku.php?plik=1 to skrypt wyświetli plik o nazwie "drugi.php" znajdujący się w tym samym katalogu.

Pozdrawiam
Istalacar
dem
albo zrobic inaczej ale dobrze zabezpieczyc (czego ja nie w przykladzie nie zrobie):

link: index.php?id=1

  1. <?
  2. $plik = $_GET['id'].'.php'; // lub .html
  3.  
  4. if (!file_exists('jakis_katalog/'.$plik) || empty($_GET['id'])) 
  5. {
  6.  echo 'nie znaleziono pliku w katalogu jakis_katalog';
  7. }
  8. else
  9. {
  10.  require_once 'jakis_katalog'.$plik;
  11. }
  12. ?>


pisane z palca ale chyba nie zawiera bledow

oczywiscie jesli chodzi o bezpieczenstwo to raczej przyklad w poprzedajacym mojego posta jest bezpieczniejszy, bo to ty narzucasz jakie pliki moga byc includowane... no ale najpierw je trzeba wprowadzic do tablicy co dodaje niepotrzebna prace;]
Neojawor
jeśli chcesz mieć kilka podstron w jednym pliku index.php i żeby różniły się tylko numerkiem, np index.php?plik=2, index.php?plik=3 itd, to musisz w index.php wsadzić kody źródłowe każdej z podstron i wsadzić switch-a:
  1. <?php
  2. switch ( $_GET['plik'] )
  3. {
  4. case 0:
  5. //cała treść podstrony o numerze 0
  6. break;
  7.  
  8. case 1:
  9. //cała treść podstrony o numerze 1
  10. break;
  11.  
  12. case 2:
  13. //cała treść podstrony o numerze 2
  14. break;
  15. }
  16. ?>

a jeśli gdzieś na stronie chcesz się odwołać do którejś z podstron to dajesz
  1. <?php
  2. echo <a href="index.php?plik=x>link do strony x</a>
  3. ?>


ot cała filozofija smile.gif
dem
Cytat(Neojawor @ 16.03.2007, 13:29:28 ) *
ot cała filozofija smile.gif


a czy nie uwazasz ze to troche nie wygodne?
Ociu
Jest nie wygodne i to strasznie, polecam filtrację poprzez file_exists i is_readable.
Neojawor
teraz to ja nie łapię, o co chodzi z tą filtracją? chodzi o include-owanie plików?
Ociu
Dajmy na to, dajesz w $_GET plik x z tego wynika, że x.php. Jednak x.php wcale nie istnieje, przez co wysypuje Ci się skrypt.
Filtracja, czyli zabezpieczenie. Sprawdzasz czy plik istnieje i czy można go odczytywać, dopiero potem dajesz include.
dem
Cytat(Ociu @ 16.03.2007, 14:53:35 ) *
Dajmy na to, dajesz w $_GET plik x z tego wynika, że x.php. Jednak x.php wcale nie istnieje, przez co wysypuje Ci się skrypt.
Filtracja, czyli zabezpieczenie. Sprawdzasz czy plik istnieje i czy można go odczytywać, dopiero potem dajesz include.


@Neojawor: czyli cos takiego jak ja napisalem pare postow wyzej tylko + sprawdzanie readable
Neojawor
no tak, teraz łapię - i jest 1000 * lepsze od switch-a

pozdrawiam i dzięki za wyjaśnienia
erix
Eee, a co z przypadkiem:
Kod
jakis_plik.php?cos=../../plik
?

Wepchnij przy file_exists" title="Zobacz w manualu PHP" target="_manual basename" title="Zobacz w manualu PHP" target="_manual:
  1. <?php
  2. if (!file_exists('jakis_katalog/'.basename($plik)) || empty($_GET['id']))
  3. ?>
dem
Cytat(erix @ 17.03.2007, 16:51:20 ) *
Eee, a co z przypadkiem:
Kod
jakis_plik.php?cos=../../plik
?


Cytat
albo zrobic inaczej ale dobrze zabezpieczyc (czego ja nie w przykladzie nie zrobie):


ale oczywiscie masz racje z basename...
Istalacar
Witam
Erix, to jest Dobra metoda, ale popatrz na temat dot. bezpieczeństwa skryptów php. W ten sposób użytkownik może manipulować przy skrypcie.
Pozdrawiam
Istalacar
erix
Z basename" title="Zobacz w manualu PHP" target="_manual? :|
Przecież bez tego może zmanipulować, chyba się nie zrozumieliśmy.

basename" title="Zobacz w manualu PHP" target="_manual zostawia samą nazwę pliku, bez ewentualnej ścieżki.
Kaiba Ziom
  1. <?
  2. $body = $_GET["body"];
  3.  
  4.  
  5.  
  6. if ($body=="")
  7.  {
  8.  include("includes/main.php"); //Link do tekstu który ma się wyświetlać przy wejściu na stronę
  9.  }
  10.  
  11. else {
  12.  
  13. if (is_file("$body.php"))
  14. {
  15. include("$body.php");
  16. }
  17.  
  18. else
  19. {
  20. echo 'Error 404'; 
  21. }
  22. }
  23.  
  24.  
  25. ?>


Jak masz menu i chcesz link w tej postaci robisz taki link:

<a href="?body=nazwa_pliku">
dem
@kaiba:

1. czytaj posty innych userow
2. szczescia zdrowia odnosnie twojego pomocnego skrypciku :E
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.