Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Linki przez Get czy jakoś tak - proszę o skrypt
Forum PHP.pl > Forum > Przedszkole
Mlody993
Witam,
chcę na mojej stronie użyć linków Get url czy jakoś tak to się nazywa. Mianowicie zamiast linków xxx.html chce mieć np. ?show=xxx mam nadzieje, że mnie rozumiecie. haha.gif

O takie linki mi chodzi:
http://forum.php.pl/index.php?showtopic=10...aded&start=

Chcę tylko ten skrypt <?php ?> a nie pamiętam co jest w środku. Kiedyś to używałem. Jeśli mogę to proszę od razu o tę linijke, że gdy ktoś nie wpisze nic poza index.php, to żeby wysłało go do index.php?show=home. ;P

Z góry dziękuję.
Maciekbjw
Cytat(Mlody993 @ 28.03.2009, 01:06:26 ) *
Witam,
chcę na mojej stronie użyć linków Get url czy jakoś tak to się nazywa. Mianowicie zamiast linków xxx.html chce mieć np. ?show=xxx mam nadzieje, że mnie rozumiecie. haha.gif

O takie linki mi chodzi:
http://forum.php.pl/index.php?showtopic=10...aded&start=

Chcę tylko ten skrypt <?php ?> a nie pamiętam co jest w środku. Kiedyś to używałem. Jeśli mogę to proszę od razu o tę linijke, że gdy ktoś nie wpisze nic poza index.php, to żeby wysłało go do index.php?show=home. ;P

Z góry dziękuję.


Najpierw to może naucz się pisać poprawnie, żebym Cię mógł zrozumieć ;-)

No ale ok,

Cytat
Chcę tylko ten skrypt <?php ?> a nie pamiętam co jest w środku. Kiedyś to używałem. Jeśli mogę to proszę od razu o tę linijke, że gdy ktoś nie wpisze nic poza index.php, to żeby wysłało go do index.php?show=home. ;P


Rozwiązanie:

  1. <?php
  2. //jesli zmienna ?show jest pusta, czyli mamy adres index.php
  3. if(empty($_GET['show']))
  4. {
  5. //przekierowujemy
  6.   header("location: index.php?show=home");
  7.   exit;
  8. }
  9. else
  10. {
  11. //tutaj reszta. może dać np switcha;)
  12.  
  13. }
  14. ?>



Jeśli chodzi o pierwszą część Twojego pytania, to chciałbym Ci pomóc, ale naprawdę Cie nie rozumiem. Napisz troszkę jaśniej.
Dariusz2
Jeśli dobrze zrozumiałem co piszesz, chcesz po prostu na swojej stronie używać linków np. index.php?show&costam

więc jeśli o to chodzi to robisz to tak :

na stronie linki podajesz <a href="index.php?show&costam">

teraz w pliku index.php
musi sie znaleźć kod :

Kod
<?php

if(isset($_GET['show'] && ($_GET['costam']) {
      
     echo ' Strona Cos Tam ';
   }
?>


jeśli chodzi o coś innego to napisz wprost biggrin.gif bo ciężko Cie zrozumieć smile.gif
Fifi209
Cytat(Dariusz2 @ 28.03.2009, 07:54:58 ) *
Jeśli dobrze zrozumiałem co piszesz, chcesz po prostu na swojej stronie używać linków np. index.php?show&costam

więc jeśli o to chodzi to robisz to tak :

na stronie linki podajesz <a href="index.php?show&costam">

teraz w pliku index.php
musi sie znaleźć kod :

Kod
<?php

if(isset($_GET['show'] && ($_GET['costam']) {
      
      echo ' Strona Cos Tam ';
    }
?>


jeśli chodzi o coś innego to napisz wprost biggrin.gif bo ciężko Cie zrozumieć smile.gif


Znak ampersand stosuje się gdy masz więcej niż jedną zmienną w adresie...

np.

http://domena/index.php?action=panel&mod=admin

Poza tym powieliłeś wypowiedź kolegi wyżej...
mpps
Wykorzystując kod Maciekbjw:

plik index.php:
  1. <?php
  2. //jesli zmienna ?show jest pusta, czyli mamy adres index.php
  3. if(empty($_GET['show'])){
  4.    //przekierowujemy
  5.    header("location: index.php?show=home");
  6.    exit;
  7. }
  8. else{
  9.    echo '<a href="index.php?show=home">home</a><br>';
  10.    echo '<a href="index.php?show=world">world</a><br>';
  11.  
  12.    //lub
  13.    //echo '<a href=\"index.php?show=1\">home</a>';
  14.    //echo '<a href=\"index.php?show=2\">world</a>';
  15.  
  16.    switch($show){
  17.        case "home" : include("home.php"); break;
  18.        case "world" : include("world.php"); break;
  19.        //może Ci się przydać, jeśli nie będziesz chciał skorzystać z header("location: index.php?show=home");
  20.        default : include("home.php"); break;
  21.  
  22.        //możesz też skorzystać np. z liczb określających ID strony:
  23.        //case "1" : include("home.php"); break;
  24.        //case "2" : include("world.php"); break;
  25.    }
  26. }
  27. ?>


plik home.php:
  1. <?php
  2. echo 'strona główna';
  3. ?>


plik world.php:
  1. <?php
  2. echo 'podstrona';
  3. ?>


pozdrawiam
Marcin
Fifi209
@up

Kod
switch($show)


Nie każdy ma włączoną dyrektywę register globals smile.gif

Poza tym switch jest bez sensu przy większych projektach...

Lepiej sprawdzić czy nazwa pasuje do wyrażenia regularnego i sprawdzić czy plik istnieje i go includować.

Kod
$reg = "/^[a-zA-Z0-9]+$/";

$name = $_GET['show'];

    if (preg_match($reg, $name)) {
        if (file_exists($name.'.php')) {
            // przykładowo dokleiłem końcówkę .php może być inna
            // include($name.'.php');
        }else{
            // Plik nie istnieje
            exit();
        }
    }else{
        // Nazwa pliku nie pasuje do wzorca
        exit();
    }
mpps
Cytat(fifi209 @ 28.03.2009, 09:50:45 ) *
Poza tym switch jest bez sensu przy większych projektach...


Biorąc pod uwagę to, że Mlody993 prawdopodobnie dopiero zaczyna zabawę z PHP, to pewnie o większych projektach jeszcze nie myśli, bo i ten najmniejszy jest dla Niego nie lada wyzwaniem winksmiley.jpg

Ale Twoje rozwiązanie jest oczywiście godne uwagi!

Pozdrawiam
Marcin
Mlody993
Cytat(Maciekbjw @ 28.03.2009, 01:34:11 ) *
Najpierw to może naucz się pisać poprawnie, żebym Cię mógł zrozumieć ;-)

No ale ok,



Rozwiązanie:

  1. <?php
  2. //jesli zmienna ?show jest pusta, czyli mamy adres index.php
  3. if(empty($_GET['show']))
  4. {
  5. //przekierowujemy
  6.   header(&#092;"location: index.php?show=home\");
  7.   exit;
  8. }
  9. else
  10. {
  11. //tutaj reszta. może dać np switcha;)
  12.  
  13. }
  14. ?>



Jeśli chodzi o pierwszą część Twojego pytania, to chciałbym Ci pomóc, ale naprawdę Cie nie rozumiem. Napisz troszkę jaśniej.


Tak, właśnie o to mi chodziło. winksmiley.jpg Wielkie dzięki. smile.gif) Tylko gdzie w tym kodzie się ustawia folder? ;p

Bo jest np. ?show=blabla i ten blabla plik jest w katalogu np. pliki no to ten skrypt musi wiedzieć gdzie szukać tego pliku, a tutaj brak informacji.
trike
?show=blablabal przesylasz tylko informacje, to nie jest odwolanie do pliku, z tego mozna odczytac zmienna $_GET['show'] ktorej wartosc jest blablabal
Mlody993
No to w takim razie my się nie rozumiemy. sad.gif Nie wiem jak to wam wytłumaczyć.

Mam plik index.php i folder XXX . W katalogu XXX znajduje się plik home.txt . Po wpisaniu strony http://www.xxxx.pl/index.php wyświetli się strona bez zawartości środka czyli pliku home.txt . A ja chcę, żeby pod tym linkiem: http://www.xxxx.pl/index.php?show=home wyświetlała się zawartość index.php + home.txt z folderu XXX. I tam mogę sobie ustawiać w tym kodzie, że np. "show" ma wczytywać pliki z katalogu XXX i sobie mogę dodawać np. pokaz=xxx i zeby ten "pokaz" brał pliki .txt z folderu XX2 - taki przykład.

I to właśnie tym kodem się robiło, jakiś rok temu jeszcze to wykorzystywałem, teraz nie pamiętam jak to się nazywało. sad.gif

@edit:
Znalazłem. Na tej stronie jest wzór tego czego szukam:
http://www.kpeyz.cba.pl/index1.php

Tylko wchodzę w kod źródłowy i nic nie widać. sad.gif
trike
moze o to ci chodzi:
  1. <?php
  2. if ($_GET['show'] == "home") {
  3. if (file_exists("xxx/home.txt"))  include("xxx/home.txt");
  4. }
  5. ?>
Mlody993
No właśnie coś takiego:
<?php
if ($_GET['show'] == "home") {
if (file_exists("xxx/home.txt")) include("xxx/home.txt");
}
?>

Tylko że jakoś tak może:
<?php
if ($_GET['show'] == "&name") {
if (file_exists("xxx/&name.txt")) include("xxx/&name.txt");
}
?>

Chodzi o to, że gdy wpisze w przeglądarce index.php?show=kontakt to wczyta plik KONTAKT.txt z katalogu xxx , a gdy w przeglądarce wpisze index.php?show=home to wczyta plik HOME.txt z katalogu xxx . Teraz już chyba rozumiecie o co mi chodzi. smile.gif)
InosU31
Cytat(Mlody993 @ 28.03.2009, 18:28:26 ) *
No właśnie coś takiego:
<?php
if ($_GET['show'] == "home") {
if (file_exists("xxx/home.txt")) include("xxx/home.txt");
}
?>

Tylko że jakoś tak może:
<?php
if ($_GET['show'] == "&name") {
if (file_exists("xxx/&name.txt")) include("xxx/&name.txt");
}
?>

Chodzi o to, że gdy wpisze w przeglądarce index.php?show=kontakt to wczyta plik KONTAKT.txt z katalogu xxx , a gdy w przeglądarce wpisze index.php?show=home to wczyta plik HOME.txt z katalogu xxx . Teraz już chyba rozumiecie o co mi chodzi. smile.gif)


no ale to przeciez dziala blinksmiley.gif

jak zrobisz tak :
  1. No właśnie coś takiego:
  2. <?php
  3. if ($_GET['show'] == "home") {
  4. if (file_exists("xxx/home.txt")) include("xxx/home.txt");
  5. }
  6. ?>


i w przegladarce wpiszesz : (w index.php dajesz kod ten wyzej) http://jakisadres.pl/index.php?show=home to wyswietli ci to co najduje sie w pliku home.txt

a to drugie "&" to jest do laczenia dwoch indexow czyli jak napiszesz : http//jakasstrona.pl/index.php?show=home&show=kontakt
to ci wyswietli obie te strony

a w miejsce home :$_GET['show'] == "home" mozesz wpisac co tam chcesz i tak samo w pzregladarce

zobacz to :
  1. <?php
  2.  
  3. if ($_GET['show'] == "name1") {
  4. if (file_exists("xxx/home.txt"))
  5. include("xxx/home.txt");
  6. }
  7.  
  8. if ($_GET['show'] == "name") {
  9. if (file_exists("xxx/kontakt.txt"))
  10. include("xxx/kontakt.txt");
  11. }
  12. ?>
Fifi209
Człowieku, przecież ja Ci na to dałem gotowy kod więc w czym problem?
Mlody993
Cytat(InosU31 @ 28.03.2009, 19:08:05 ) *
no ale to przeciez dziala blinksmiley.gif

jak zrobisz tak :
  1. <?php
  2. No właśnie coś takiego:
  3. if ($_GET['show'] == &#092;"home\") {
  4. if (file_exists(&#092;"xxx/home.txt\")) include(\"xxx/home.txt\");
  5. }
  6. ?>


i w przegladarce wpiszesz : (w index.php dajesz kod ten wyzej) http://jakisadres.pl/index.php?show=home to wyswietli ci to co najduje sie w pliku home.txt

a to drugie "&" to jest do laczenia dwoch indexow czyli jak napiszesz : http//jakasstrona.pl/index.php?show=home&show=kontakt
to ci wyswietli obie te strony

a w miejsce home :$_GET['show'] == "home" mozesz wpisac co tam chcesz i tak samo w pzregladarce

zobacz to :
  1. <?php
  2. if ($_GET['show'] == &#092;"name1\") {
  3. if (file_exists(&#092;"xxx/home.txt\"))
  4. include(&#092;"xxx/home.txt\");
  5. }
  6.  
  7. if ($_GET['show'] == &#092;"name\") {
  8. if (file_exists(&#092;"xxx/kontakt.txt\"))
  9. include(&#092;"xxx/kontakt.txt\");
  10. }
  11. ?>


No tak, ale do każdego pliku z folderu XXX muszę dopisywać nowy wiersz
Cytat
if ($_GET['show'] == \"name\") {
if (file_exists(\"xxx/kontakt.txt\"))
include(\"xxx/kontakt.txt\");
}

A ja chcę, żeby był jeden taki wiersz i obojętnie jaką nazwę wpiszę po show= to taki plik mi wczyta. Według twojego kodu dla każdego pliku muszę dodać ten wiersz, a co gdy plików będzie np. 1000 ? :/ 100 wierszy kilko linijkowych to niezły bałagan będzie.

Cytat(fifi209 @ 28.03.2009, 19:44:58 ) *
Człowieku, przecież ja Ci na to dałem gotowy kod więc w czym problem?

No niby gotowy, ale gdzie jest linia odpowiedzialna za folder, w którym ma szukać pliku .txt?
Fifi209
Kod
$reg = "/^[a-zA-Z0-9]+$/";

$name = $_GET['show'];

    if (preg_match($reg, $name)) {
        if (file_exists($name.'.php')) { // tutaj
            // przykładowo dokleiłem końcówkę .php może być inna
            // include($name.'.php'); // i tutaj
        }else{
            // Plik nie istnieje
            exit();
        }
    }else{
        // Nazwa pliku nie pasuje do wzorca
        exit();
    }


Robisz np. tak:

'folder/'.$name.'.txt'

Ale mi problem troszkę zmienić ? biggrin.gif

"tutaj" ma być ta sama ścieżka w razie czego ;d

@edit
Słuchaj wypowiedzi pana na dole a jesteś narażony na błędy include winksmiley.jpg

@down

A co jeżeli wpiszę?

a../index.php

Dostanę błędy? A jeżeli ktoś użyje tego do jeszcze gorszych rzeczy ? tongue.gif
Z resztą nie wiem po co powielasz wypowiedzi poprzedników.
trike
podawaj w linku nazwe pliku i katalogu powiedzmy: index.php?kat=cos&plik=cosinnego

  1. <?php
  2. if ((isset($_GET['kat'])) && (isset($_GET['plik']))) {
  3. if (file_exists($_GET['kat']."/".$_GET['plik'])) include($_GET['kat']."/".$_GET['plik']));
  4. }
  5. ?>
Mlody993
Czyli to ma wyglądać tak:
Cytat
<?php
$reg = "/^[a-zA-Z0-9]+$/";

$name = $_GET['show'];

if (preg_match($reg, $name)) {
if (file_exists('txt/'.$name.'.txt')) { // tutaj
// przykładowo dokleiłem końcówkę .php może być inna
// include('txt/'.$name.'.txt'); // i tutaj
}else{
// Plik nie istnieje
exit();
}
}else{
// Nazwa pliku nie pasuje do wzorca
exit();
}
?>



Tyle, że daje link index.php?show=home i nie wyświetla pliku HOME. :/ home.txt jest w folderze txt .
Fifi209
Polecam usunąć komentarz poprzedzający funkcję include ;d

zamiast
Kod
// include('txt/'.$name.'.txt'); // i tutaj


ma być:
Kod
include('txt/'.$name.'.txt');
Mlody993
Aha, wszystko już okej. A jak się włącza stronę to trona jest "rozwalona" bo nie ma linku xxx.pl/index.php?show=home tylko xxx.pl/index.php i nie wczytuje HOME i strona rozwalona. Co zrobić, aby na dzień dobry otwierało stronę ?show=home questionmark.gif

@edit:
Okej wszystko rozwiązane. Odpowiedź w drugim poście. Drobna modyfikacja i jest git:
Cytat
<?php
//jesli zmienna ?show jest pusta, czyli mamy adres index.php
if(empty($_GET['show']))
{
//przekierowujemy
header("location: ?show=home");
exit;
}
else
{
//tutaj reszta. może dać np switcha;)

}
?>
Fifi209
Jak masz kawałek:

Kod
}else{
// Plik nie istnieje
exit();
}
}else{
// Nazwa pliku nie pasuje do wzorca
exit();


zamiast exitów daj:
include('txt/home.txt');
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.