![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 3.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Pare lat temu interesowałem się robieniem stron, nawet nieźle mi szło ale studia + praca + żona (IMG:style_emoticons/default/biggrin.gif) i jakoś straciłem kontakt. W tamtych czasach używałem małego skryptu php do ładowania zawartości strony z plików txt ( które mogły posiadać kod php/html etc). Dokładnie chodzi o skrypt który moge wstawić w miejscu gdzie standardowo znajdują się aktualności/zawartość pod stron abym nie musiał tworzyć 100 takich samych plików stron gdzie jedyna różnica to środek ( gdyż jak coś się zmieni to musiałbym ręcznie strone po stronie zmieniać). Pamiętam że to było coś prostego na pare linijek w sensie załaduj plik *.txt z folderu *** i koniec, a strona była wstanie wyświetlić plik wykrywając html etc i tworząc wszystkie tabelki etc. Oczywiście tak abym mógł zrobić linki w stylu index.php?glowna.txt index.php?podstrona1.txt w many aby załadować poszczególne podstrony. Byłbym niesamowicie wdzięczny jeśli ktoś mógłby taki mały skrypcik napisać. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 376 Pomógł: 47 Dołączył: 23.08.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
1. Robisz kilka plikow PHP, np. strona1.php, strona2.php, strona3.php
2. Wrzucasz w miejscu gdzie masz miec tresc:
3. Dodajesz linki 4. Pozostaje Ci tylko pokombinowac co w wypadku gdy zmienna link jest pusta badz jej po prostu nie ma, np.
Ale jest jeszcze jeden problem: uzytkownik wpisuje celowo/przypadkowo w adres przegladarki ?link=strona50 i jest komunikat o bledzie. Moim zdaniem najprostsza i chyba najlepsza metoda na ich ukrycie to przed include dac po prostu @ , np.
to samo tyczy sie glownej, ktora moze z jakiegos powodu nie byc wczytana... Ogolnie polecam zapisywanie danych w plikach PHP, a nie TXT chocby z tego powodu, ze jesli uzytkownik znajdzie sciezke do pliku TXT to moze zajrzec w kod. A tak to dasz rozszerzenie PHP i wszystko co w PHP wpiszesz, lacznie z haslami w zmiennych, nie zostanie odnalezione. Ten post edytował Kaloryfer 3.11.2011, 01:29:25 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ale jest jeszcze jeden problem: uzytkownik wpisuje celowo/przypadkowo w adres przegladarki ?link=strona50 i jest komunikat o bledzie. Moim zdaniem najprostsza i chyba najlepsza metoda na ich ukrycie to przed include dac po prostu @ , np. To nie jest wcale najprostsza i najlepsza metoda, co najwyżej twoim zdaniem. Błędów się nie tłumi, tylko się je przewiduje i do nich nie dopuszcza! Kod $plik = isset($_GET['link']) ? $_GET['link'] : 'jakis_domyslny_plik';
$plik = basename($plik).'.php'; if(is_readable($plik)) { include($plik); } |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 376 Pomógł: 47 Dołączył: 23.08.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dlatego napisalem chyba najlepsza metoda (IMG:style_emoticons/default/wink.gif) Ale oczywiscie masz racje. A co sadzisz o file_exists zamiast is_readable ?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
is_readable załatwia dwie sprawy, sprawę tego czy dany plik/katalog istnieje i czy masz uprawnienia odczytu. Już w sumie oduczyłem się korzystania z file_exists na rzecz is_readable/is_writable. W tym przypadku kiedy nazwa pliku pochodzi od użytkownika, żeby nie mógł sobie wpisać co chce, używamy basename() żeby nie mógł się poruszać po katalogach: http://vivee.info/2008/10/20/jak-zabezpiec...le-include-rfi/ basname ukróci taką możliwość, zwracając tylko nazwę pliku, a jeżeli nie będzie go w katalogu (is_readable) to nie zostanie zaincludowany, można dodać else do tej instrukcji i wywalać jakiś błąd. Tak na szybko, bo generalnie można by dodać "na wszelki wypadek" jakieś jeszcze zabezpieczenia.
Tłumienie błędów raczej w żadnym wypadku nie ma najmniejszego sensu, bo generalnie każdy kod można napisać tak żeby skrypt nie robił to co chciał, ale robił dokładnie to co chcemy i nic poza to. Na is_readable trzeba tez uważać, bo on nie sprawdza pliku, tylko pliki i katalogi, w przypadku błędnej ścieżki może również zwrócić true, ale jak już się o tych rzeczach wie to is_readable IMO jest lepszym wyborem. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 376 Pomógł: 47 Dołączył: 23.08.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dzieki, poczytam sobie wieczorkiem (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 07:09 |