Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%)
|
Witam. Mam mam skrypt na wysyłanie plików użytkownikowi, ale gdy one docierają do klienta są one tak jak by uszkodzone i nie da się ich otworzyć.
Przedstawię kawałek kodu, który odpowiada za wysłanie plików.
Proszę o sprawdzenie kodu i o pomoc w naprawieniu go. Z góry dzięki. (IMG:style_emoticons/default/smile.gif) Ten post edytował maxil 8.08.2011, 10:42:16 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 7 Dołączył: 7.08.2011 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%)
|
co przez to sugerujesz? manuala czytałem według mnie jest wszystko dobrze. |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%)
|
Kolega tylko odesłał do przykładu funkcji, która podobno zawsze działa. To tylko jej przerobiony fragment, przy czym pozostawiłem komentarze:
Zauważ, że niektóre nagłówki są required, czyli wymagane. $fullPath to u Ciebie $target. Swoją drogą, czym u Ciebie jest zmienna $file? |
|
|
|
Post
#5
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
A ja chciałbym Ci zwrócić uwage na jedna rzecz... Czy to JEDYNE rzeczy wysyłane przy okazji przez przeglądarkę. Sam kiedyś przypadkiem pisząc kontroler do tego samego celu nie zauwazyłem jednej rzeczy: zanim zaczął przesyłać plik, próbował dopchnąć jeszcze kawałek widoku, który byl dla tego kontrolera bazowym. Wywołując więc metodę renderującą do przegladarki zrobiłem wysyłkę kawałka layoutu + tyle danych z pliku by się length zgadzał, więc nie było szansy się połapać, że posłałem nie to co trzeba bo wielkościowo pliki się zgadzały (IMG:style_emoticons/default/smile.gif) Dopiero po bliższej analizie doszedłem, że błąd powodowało niepełne odseparowanie wysyłki pliku i renderu layoutu, który przykładowo informował, że wysyłanie zostało rozpoczęte.
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%)
|
Kolega tylko odesłał do przykładu funkcji, która podobno zawsze działa. To tylko jej przerobiony fragment, przy czym pozostawiłem komentarze: Zauważ, że niektóre nagłówki są required, czyli wymagane. $fullPath to u Ciebie $target. Swoją drogą, czym u Ciebie jest zmienna $file? zmienna $file to nic innego jak nazwa pliku który ma być wysłany (edit) @thek Właśnie zauważyłem, że mam podobny problem jak Ty miałeś. Odpaliłem pliczek w HEX EDITOR i zauważyłem piękny kod mojego layoutu. Jak Ci się udało odseparować wysyłkę pliku od renderu layouta? Czy mógłbyś naprowadzić mnie na odpowiednie działania? P.S Nie oczekuję gotowca tylko pomoc w naprawie mojego kodu. Ten post edytował maxil 9.08.2011, 20:19:45 |
|
|
|
Post
#7
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Musisz wyskoczyć z szablonu swojego frameworka, tak by nie korzystało z jego widoku lub dziedziczyć po najbardziej bazowej klasie, która nie korzysta z własnego widoku jeszcze. Ja pracowałem wtedy w Kohanie i dziedziczyłem po Controller. Dopiero z niego bowiem dziedziczą wszystkie inne, w tym Template_Controller, który jest bazowym dla większości aplikacji.
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 5 Dołączył: 10.07.2008 Skąd: Wrocław Ostrzeżenie: (0%)
|
Sorry za podpięcie, ale może ktoś wytłumaczyć, po co korzystać z takiego "downloadera"? Jedyny sensowny powód jaki w tej chwili mi się nasuwa, to próba ukrycia bezpośredniej ścieżki do pliku...
|
|
|
|
Post
#9
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Chociażby kontrola pobrań?
|
|
|
|
Post
#10
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
@eccocce: Ukrycie ścieżki? Na jeden raz (IMG:style_emoticons/default/smile.gif) Zaraz potem i tak ścieżkę pozna. Ten skrypt, jak wspomniał erix, łączy się z katalogami gdzie htaccess nie daje dostępu. Dzięki jednak połączeniu dodatkowo z ACL możemy w określonych wypadkach zezwolić userom na pobieranie z nich za pomocą właśnie tegoż skryptu.
Podam przykład. Każdy user ma na serwerze swój "katalog domowy". Pewne z katalogów są publiczne (obrazki czy jakieś pliki), ale pewne ma do dostępu tylko on i nikt więcej. Taki schowek. Pograć z niego można pliki tylko takim skryptem i tylko jeśli skrypt wykryje, że próbuje go użyć osoba, która ma do tego uprawnienia. User A więc może tylko swoje pliki przeglądać i nie ma dostępu do plików usera B, nawet jeśli zna dokładną ścieżkę na serwerze. Dostanie Access Forbidden i po zabawie. Poza tym można użyć do zliczania pobrań czy tego typu kombinacji, gdy chcesz mieć jakieś statystyki proste |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 5 Dołączył: 10.07.2008 Skąd: Wrocław Ostrzeżenie: (0%)
|
No fakt, przy pobieraniu od razu poznamy ścieżkę. Czyli dajmy na to zdobyliśmy bezpośrednią ścieżkę do chronionego pliku, próbujemy użyć jej w przeglądarce, żeby pobrać plik, ale w tym momencie nie przepuszcza nas htaccess. Z kolei sam ten skrypt nie daje nam kontroli pobrań, tzn. wymaga dodatkowego mechanizmu autoryzacji i uwierzytelniania, prawda? W końcu skąd skrypt ma wiedzieć, że Ty to Ty i że nawet jeśli to Ty, to czy masz prawo obejrzeć wywoływany plik. Mam tutaj na myśli np. logowanie + właśnie jakiś prosty ACL. O to chodzi?
|
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%)
|
dzięki thek za pomoc.
już udało mi się odseparować wysyłkę od renderu layouta i wszystko śmiga pięknie. |
|
|
|
Post
#13
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
@eccocce: prawda. Blokada htacessem i nie dostanie się rzez ściezkę bezpośrednią. Znajomość pliku dostępowego - brak dostepu bo brak uprawnień przez niego wymaganych. Klasyka tego typu skryptów.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 04:49 |