Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> $_GET i adres np. plik.php?id=artykuly
Legro
post
Post #1





Grupa: Zarejestrowani
Postów: 233
Pomógł: 3
Dołączył: 18.07.2005

Ostrzeżenie: (40%)
XX---


Jak takie adresy zrobić za pomocą $_GET (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

Metoda $_POST już mi lepiej wychodzi. A gdy próbuję coś zrobić z $_GET to nic mi nie wychodzi :/ Pomożecie, i ew. napiszecie jakiś przykładzik..
Go to the top of the page
+Quote Post
Pigula
post
Post #2





Grupa: Zarejestrowani
Postów: 446
Pomógł: 0
Dołączył: 5.03.2005
Skąd: Lublin

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


jak masz plik.php?id=artykuly to odbierasz $zmienna=$_GET['id']; i wartosc $zmienna jest rowna artykuly i pozniej robisz z tym co chcesz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) mozesz sprawdzac casem i includowac odpowiedni pilik itp.
Go to the top of the page
+Quote Post
kyno
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 121
Pomógł: 1
Dołączył: 4.01.2004
Skąd: Jawor

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


Czytales manuala ?


  1. <?php
  2. $_GET['id']
  3. ?>
Go to the top of the page
+Quote Post
Legro
post
Post #4





Grupa: Zarejestrowani
Postów: 233
Pomógł: 3
Dołączył: 18.07.2005

Ostrzeżenie: (40%)
XX---


Znalazłem tylko to w manualu.

http://pl.php.net/manual/pl/reserved.varia...d.variables.get

I tam żadnego przykładu nie ma do $_GET :/
Go to the top of the page
+Quote Post
-margarina-
post
Post #5





Goście







Dajmy taki przykład(tylko go nie stosuj, bo on jest rajem dla hackerów).
Założmy masz strone, masz artkykuly itp. Dajmy na to plik artykuly.php pobiera artykuly z folderu articles . Plik artykuly.php będzie więc tak wygladal:

<?php

$id=$_get['id']
readfile('articles/'.$id.'.html');

?>

I masz jeden artykul o nazwie gole w pliku articles/gole.html . Mozesz teraz do niego wejść po przez twojastrona/articles/gole.html albo twojastrona/artykuly.php?id=gole

TO będzie tak po krótce
Go to the top of the page
+Quote Post
pyro
post
Post #6





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


  1. <?php
  2.  
  3. $id=$_get['id']
  4. readfile('articles/'.$id.'.html');
  5.  
  6. ?>


I w ten sposób coraz częściej da sie widzieć napisy "hack3d by..."
Go to the top of the page
+Quote Post
-margarina-
post
Post #7





Goście







Sorka pomyłka zamiast $_get powinno być $_GET . jakby jakieś pomyłki jeszcze były to poprawcie mnie bo to na szybciora pisałem
Go to the top of the page
+Quote Post
Spykaj
post
Post #8





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 30.05.2008
Skąd: Białystok

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


A jak się zrobi

  1. <?php
  2. include("./artykuly/$.php");
  3. ?>


to też jest niebezpieczne ?
Go to the top of the page
+Quote Post
matx132
post
Post #9





Grupa: Zarejestrowani
Postów: 243
Pomógł: 19
Dołączył: 12.09.2005

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


ten kod moze byc bezpieczny jak sie usunie wszystkie niepotrzebne znaki z pobranej wartosci:)
i bedzie good

tylko wiadomo ma być:)

  1. <?php
  2. $id=$_GET['id'];
  3. include('./artykuly/'.$id.'.php');
  4. ?>


i przed include susuwasz wszystko np addslahs(czy jakoś tak)
itp itd:)

Ten post edytował matx132 2.07.2008, 10:36:29
Go to the top of the page
+Quote Post
pyro
post
Post #10





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


a najlepiej tylko przepuścić litery... jak to jest potrzebne to można też liczby, regular expressions (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Shili
post
Post #11





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Cytat
i przed include susuwasz wszystko np addslahs(czy jakoś tak)
itp itd:)

Addslashes, ale to bardziej w dodawaniu do bazy danych.

Najlepiej moim zdaniem zrobić tablicę istniejących plików i za pomocą wartości get wybierać odpowiedni indeks z tej tablicy. Zainkludowane zostaną tylko te pliki, które mogą być zainkludowane.

Ten post edytował Shili 2.07.2008, 11:02:53
Go to the top of the page
+Quote Post
antyqjon
post
Post #12





Grupa: Zarejestrowani
Postów: 77
Pomógł: 27
Dołączył: 24.03.2002
Skąd: Tarnów

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


Cytat(Shili @ 2.07.2008, 12:02:31 ) *
Addslashes, ale to bardziej w dodawaniu do bazy danych.

Najlepiej moim zdaniem zrobić tablicę istniejących plików i za pomocą wartości get wybierać odpowiedni indeks z tej tablicy. Zainkludowane zostaną tylko te pliki, które mogą być zainkludowane.

Tudzież basename() + file_exists() itp. BTW, wątek z 2005 roku ;]
Go to the top of the page
+Quote Post
pyro
post
Post #13





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(Shili @ 2.07.2008, 12:02:31 ) *
Addslashes, ale to bardziej w dodawaniu do bazy danych.

Najlepiej moim zdaniem zrobić tablicę istniejących plików i za pomocą wartości get wybierać odpowiedni indeks z tej tablicy. Zainkludowane zostaną tylko te pliki, które mogą być zainkludowane.


pfff.... a jesli to bylby blog, ktory tworzy każdą stronę wraz z nowym kontem? Chyba narazie dałem najlepsze rozwiązanie (dziwnie to zabrmiało (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) )

Cytat("antyqjon")
Tudzież basename() + file_exists() itp. BTW, wątek z 2005 roku ;]


Co to by miało niby dać?
Go to the top of the page
+Quote Post
Shili
post
Post #14





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Cytat
pfff.... a jesli to bylby blog, ktory tworzy każdą stronę wraz z nowym kontem? Chyba narazie dałem najlepsze rozwiązanie (dziwnie to zabrmiało (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) )
Objawię Ci tajemnicę ^^ Listę plików można tworzyć automatycznie, wpisywać je do tablicy równie automatycznie i dzięki temu mieć jednocześnie piękną obsługę błędów.

W blogu nie chodzi o includowanie podstron, to całkiem inna bajka, gdzie wszystko przesyłane przez get jest wyciągane z bazy danych. No chyba, że istnieje gdzieś blog operujący na plikach, ale to dziwne by było. W przypadku prywatnych, to faktycznie dość możliwe, ale wtedy dochodzą, czy też powinny dojść mechanizmy sprawdzające poprawność tych danych i przeważnie też nie polega na przesyłaniu całej nazwy pliku, a w przypadku archiwum określonego okresu.

Cytat
Co to by miało niby dać?
Choćby to, że sprawdza się, czy plik istnieje, a nie includuje wszystko jak leci (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)


@edit
Tfu, automatyka z informatyką zaczyna mi się mieszać ^^

Ten post edytował Shili 2.07.2008, 14:50:43
Go to the top of the page
+Quote Post
pyro
post
Post #15





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat
Choćby to, że sprawdza się, czy plik istnieje, a nie includuje wszystko jak leci (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)


yhm... czyli wd. Ciebie te basename() i file_exists() zapewniają tu bezpieczeństwo?
Go to the top of the page
+Quote Post
Shili
post
Post #16





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Tak, nie same, ale z innymi zabezpieczeniami jak najbardziej. Poza tym daje możliwość wyświetlenia ładnej informacji o błędzie i nie skutkuje z marszu fatal errorem.
Go to the top of the page
+Quote Post
pyro
post
Post #17





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat("Shilli")
Tak, nie same, ale z innymi zabezpieczeniami jak najbardziej.


hehehheh (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

No... jakimi ;p??
Go to the top of the page
+Quote Post
Shili
post
Post #18





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Nie podałeś na razie żadnego argumentu czemu Twoje rozwiązanie jest najlepsze. Skoro chcesz dyskutować rób to merytorycznie.

Jakimi zabezpieczeniami? Jeśli istnieje lista plików, które nie powinny być includowane tą metodą, to wypadałoby jeszcze zrobić tablicę wyjątków. Wyjaśnij mi teraz zamiast zadawać kolejne pytania w jakim sensie wyrażenie regularne miałoby być lepsze od ścisłego zbioru plików możliwych do includowania?

@down
Kurcze! To próbuję Ci przetłumaczyć - wyrażenie regularne takie jak zaproponowałeś przepuści WSZYSTKIE nazwy plików jedynie ze znakami a-zA-Z0-9; dzięki temu trzeba będzie nazywać pliki do niezaincludowania za pomocą innych znaków, co jest o tyle nieciekawe, że nazewnictwo powinno być jednolite.

Poza tym jak wpiszę w get blgagagtaeg214142jjljljfsaja to też mi zaincluduje plik, czy też plunie warningiem, chociaż nikt o zdrowych zmysłach raczej nie tworzy takich plików dla użytkowników. Uważasz, że to jest plik przeznaczony do includowania?

@down jeszcze raz
Zabrakło mi słów. Nie możesz ustawić, bo to przejdzie Twoje proponowane wyrażenie regularne. Co najwyżej możesz sprawdzić za pomocą tego odrzuconego przez Ciebie file exist czy plik istnieje. Btw, congif również przejdzie.

Ten post edytował Shili 2.07.2008, 15:44:32
Go to the top of the page
+Quote Post
pyro
post
Post #19





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Ponieważ robić tablicę wszystkich wyjątków to dużo roboty... poza tym nie powinno się includować jakichkolwiek innych plikow niz te ktore sa do tego przeznaczone... taka lista zajmowała by baaaardzo dużo a wyrażenie regularne ot bodajże jedna, niedługa linijka

Cytat(Shili @ 2.07.2008, 16:02:15 ) *
Nie podałeś na razie żadnego argumentu czemu Twoje rozwiązanie jest najlepsze. Skoro chcesz dyskutować rób to merytorycznie.

Jakimi zabezpieczeniami? Jeśli istnieje lista plików, które nie powinny być includowane tą metodą, to wypadałoby jeszcze zrobić tablicę wyjątków. Wyjaśnij mi teraz zamiast zadawać kolejne pytania w jakim sensie wyrażenie regularne miałoby być lepsze od ścisłego zbioru plików możliwych do includowania?

@down
Kurcze! To próbuję Ci przetłumaczyć - wyrażenie regularne takie jak zaproponowałeś przepuści WSZYSTKIE nazwy plików jedynie ze znakami a-zA-Z0-9; dzięki temu trzeba będzie nazywać pliki do niezaincludowania za pomocą innych znaków, co jest o tyle nieciekawe, że nazewnictwo powinno być jednolite.

Poza tym jak wpiszę w get blgagagtaeg214142jjljljfsaja to też mi zaincluduje plik, czy też plunie warningiem, chociaż nikt o zdrowych zmysłach raczej nie tworzy takich plików dla użytkowników. Uważasz, że to jest plik przeznaczony do includowania?


No to Ty nie próbuj mi tłumaczyć... sam spróbuj zrozumieć. blgagagtaeg214142jjljljfsaja, jak wpisze cos takiego w GET'cie, to poprostu mogę ustawić komunikat, który ładnie wygląda, >> 404 <<. Jak zrobić to twoim sposobem, czy to z basename, czy to z file_exists, to nadal moge sobie includowac, czy tez odczytywac pliki typu:
- etc/passwd
- conf.php
- inne tajne pliki...
Go to the top of the page
+Quote Post
mike
post
Post #20





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(pyro @ 2.07.2008, 16:39:39 ) *
Jak zrobić to twoim sposobem, czy to z basename, czy to z file_exists, to nadal moge sobie includowac, czy tez odczytywac pliki typu:
- etc/passwd
- conf.php
- inne tajne pliki...
Bzdura. Za pomocą samej funkcji basename() jestem w stanie stwierdzić czy podajesz plik czy ścieżkę. Dokładając do tego file_exists() sprawię że pliki będą z lokalizacji, którą ja wybieram a nie atakujący.

Napisz po prostu że nie wiesz a nie że sie nie da (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował mike 2.07.2008, 15:51:07
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 23.08.2025 - 11:52