![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 8.08.2017 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam problem ze wspomnianym już w tytule pobieraniem plików z serwera (pracuję póki co na localhost). Konkretnie: podczas pobierania plików tekstowych są one większe o 2 bajty - na początku pliku pojawia się dodatkowa pusta linia, natomiast inne typy plików (np. obrazki) są uszkodzone i nie da się ich otworzyć. Z uploadem jest wszystko w porządku (powinno), ponieważ pliki już wysłane ale jeszcze nie w żaden sposób zmienione, stąd moja diagnoza. Oto fragment mojego kodu z pliku download.php do pobierania plików (krotki komentarz poniżej):
linia 1: w tablicy $row umieszczone są dane pliku pobrane wcześniej z bazy danych linia 7: używam funkcji substr() aby wyciągnąć z nazwy pliku tylko tą cześć, jaką użytkownik powinien zobaczyć (poprzedni ciąg znaków służy temu, aby nie powodował błędów przy dodaniu kilku plików o tej samej nazwie), nie wiem czy to ma jakieś znaczenie i czy w tym miejscu wkrada się błąd, ale piszę tak pro forma. linie 2,3,10-16: docelowo ma to zabezpieczyć przed błędami w sytuacji, gdy plik zostanie usunięty z serwera, ale nie zostanie usunięty z bazy danych i użytkownik będzie miał nadal możliwość kliknięcia na jednej ze stron "pobierz plik". Jednak też nie działa to tak jak powinno: otrzymuję komunikat, że strona powoduje zbyt wiele przekierowań. Co więcej nagłówek header z linii 15 powoduje wypisanie złego adresu url (z innych podstron działa to bez zarzutu) mianowicie: zamiast adresu "localhost/HD/ tasks_all.php?sid=13&tid=15" (przykładowe wartości liczbowe) pojawia się "http://localhost/HD/download.php/tasks_all.php?sid=13&tid=15". Gdy w tym pliku testowo pisałem w niektórych miejscach "echo" aby kontrolować, czy warunek w ifie jest spełniany (tak wiem że to słabe rozwiązanie, ale jeszcze nie bardzo ogarniam debugger w NetBeansie), wszystko wypisywane było do pliku tekstowego (również ewentualne informacje o błędach z php). Wiem, że jest to spowodowane tym co dzieje się w liniach 4-8, ale czy mógłby ktoś powiedzieć mi jak użyć potem nagłówka header aby "wyjść z pliku" i móc znowu wyświetlić ewentualne komunikaty w przeglądarce oraz prawidłowo przekierować operacje na inną stronę? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Albo masz pusta linie przed <?php albo zapisujesz swoj plik .php w utf z BOM. Ustaw: utf8 bez BOM
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 8.08.2017 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdziłem, niestety żadne z powyższych.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 3 Dołączył: 11.10.2016 Ostrzeżenie: (0%) ![]() ![]() |
Co to header location to mozna to obejsc
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 8.08.2017 Ostrzeżenie: (0%) ![]() ![]() |
Albo masz pusta linie przed <?php albo zapisujesz swoj plik .php w utf z BOM. Ustaw: utf8 bez BOM Jednak troszkę się pospieszyłem z moją poprzednią odpowiedzią. Sprawdziłem dokładniej cały plik komentując linijka po linijce i sprawdzając, która instrukcja dopisuje wspomniany znak nowej linii. Przed znacznikiem <?php w tym pliku nie było pustej linii ale jedną z instrukcji było "require_once ...", która odnosiła się do pliku gdzie zostawiłem dodatkowy "enter" za znacznikiem ?>. Dzięki za pomoc, można zamknąć temat. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 16:04 |