Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z headerem i pobieraniem plików, Problem
MateuszS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Chciałem aby na moim prywatnym hostingu po naciśnięciu odpowiedniego inputa pobierało pliki na komputer a nie wyświetlało je (grafika i tekstowe), więc zastosowałem rzekomo dobre rozwiązanie:
Z tąd

Niestety, mimo licznych kombinacji to nie działa, po kliknięciu na button następuje próba pobrania pliku o tej nazwie jednak zajmuje on po kilka kb i nie można go otworzyć. Ścieżka do pliku jest dobra bo po zwykłym header("Location: $sciezka"); dziala, jednak jak już pisałem, chodzi mi o rozwiązanie wykluczające otwieranie niektórych rozszerzeń plików w oknie przeglądarki

Oto kod:
  1. if(!empty($wynik["haslo"])) {
  2. $wpisane = strip_tags(str_replace(' ','', $_POST["haslo"]));
  3. if(!empty($wpisane)) {
  4. if($haslo == $wpisane) {
  5. echo "Pobieranie pliku rozpoczęte... ";
  6. header('Content-Type: application/x-unknown');
  7. header('Content-Description: File Transfer');
  8. header('Content-Disposition: attachment; filename='.$wynik["sciezka"]);
  9. header('Content-Transfer-Encoding: binary');
  10. // header("Location: ".$wynik["sciezka"]);
  11. } else {
  12. echo "Błąd: Hasło niepoprawne";
  13. }
  14. } else {
  15. echo "Błąd: Wpisz hasło do pliku.";
  16. }
  17. } else {
  18. echo "Pobieranie pliku rozpoczęte... ";
  19.  
  20. header('Content-Type: application/x-unknown');
  21. header('Content-Description: File Transfer');
  22. header('Content-Disposition: attachment; filename='.$wynik["sciezka"]);
  23. header('Content-Transfer-Encoding: binary');
  24. // header("Location: ".$wynik["sciezka"]);
  25. }


Kolejność headerów chyba jest dobra

Ten post edytował MateuszScirka 22.01.2010, 17:22:19
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MateuszS
post
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Ten plik includuje do index.php gdzie mam na pocz. ob_start() i na koncu ob_end_flush();

  1. <?php
  2.  
  3. $zapytanie = mysql_query("SELECT * FROM `fu2_pliki` WHERE `hash_link`='".$_GET["l"]."'") or die(mysql_error());
  4.  
  5. if(mysql_num_rows($zapytanie) == 0) {
  6. exit("Błąd: Nie ma pliku o podanym linku");
  7. }
  8.  
  9. $wynik = mysql_fetch_assoc($zapytanie);
  10. $zapytanie2 = mysql_query("SELECT * FROM `fu2_rozszerzenia` WHERE `id`='".$wynik["rozszerzenie"]."'") or die(mysql_error());
  11. $rozszerzenie = mysql_fetch_assoc($zapytanie2);
  12. $haslo = $wynik["haslo"];
  13. if($wynik["rozmiar"] == 0) $wynik["rozmiar"]=0.01;
  14. if(!isset($_POST["send"])) {
  15. echo "<form name='lol' action='' method='POST'>";
  16. echo "Pobieranie pliku <span style='font-family: verdana; font-size: 10pt;'>".$wynik["nazwa"]."</span>";
  17. echo "<br /><br />";
  18. echo "<span style='font-size: 13pt;'>Nazwa pliku: </span><span style='font-family: verdana; font-size: 12pt; opacity: 0.85'>".$wynik["nazwa"]."</span><br />";
  19. echo "<span style='font-size: 13pt;'>Format: </span><span style='font-family: verdana; font-size: 12pt; opacity: 0.85'>".$rozszerzenie["rozszerzenie"]."</span><br />";
  20. echo "<span style='font-size: 13pt;'>Rozmiar: </span><span style='font-family: verdana; font-size: 12pt; opacity: 0.85'>".$wynik["rozmiar"]." Mb</span><br /><br >";
  21.  
  22. if(!empty($wynik["email"]) or !empty($wynik["opis"])) {
  23. echo "<img src='images/szczegoly.png' id='29' /><br /><br />";
  24. }
  25. echo "<div class='box_5' style='display: none'>";
  26. if(!empty($wynik["email"])) {
  27. echo "Email autora <span style='font-family: verdana; font-size: 10pt; opacity: 0.85'>".$wynik["email"]."</span><br />";
  28. }
  29. if(!empty($wynik["opis"])) {
  30. echo "Opis: <span style='font-family: verdana; font-size: 10pt; opacity: 0.85'>".$wynik["opis"]."</span><br />";
  31. }
  32. echo "</div>";
  33. echo "<input type='hidden' value='1' name='send' />";
  34. echo "<br />";
  35. if(!empty($wynik["haslo"])) {
  36. echo "Podaj hasło do pliku: <br /><input type='password' name='haslo' style='opacity: 0.85; width: 155px; background-color: silver' /><br /><br />";
  37. }
  38. echo "<img src='images/pobierz.png' id='30' onClick='document.lol.submit();' style='opacity: 0.7' onMouseOver='opacity_in(30)' onMouseOut='opacity_dis(30)' />";
  39. echo "</form>";
  40. } else {
  41. //$otworz = opendir("pliki/".$wynik["folder"]);
  42. if(!empty($wynik["haslo"])) {
  43. $wpisane = strip_tags(str_replace(' ','', $_POST["haslo"]));
  44. if(!empty($wpisane)) {
  45. if($haslo == $wpisane) {
  46.  
  47. $filesize = filesize($wynik["sciezka"]);
  48.  
  49.  
  50. header('Content-Type: application/octet-stream');
  51. header('Content-Disposition: attachment; filename="'.basename($wynik["sciezka"]).'"');
  52. header('Content-Transfer-Encoding: binary');
  53. header('Content-Length: '.sprintf('%d', $filesize));
  54. header('Expires: 0');
  55. header('Pragma: no-cache');
  56.  
  57.  
  58. @readfile($wynik["sciezka"]);
  59.  
  60.  
  61. } else {
  62. echo "Błąd: Hasło niepoprawne";
  63. }
  64. } else {
  65. echo "Błąd: Wpisz hasło do pliku.";
  66. }
  67. } else {
  68.  
  69. $filesize = filesize($wynik["sciezka"]);
  70.  
  71. header('Content-Type: application/octet-stream');
  72. header('Content-Disposition: attachment; filename="'.basename($wynik["sciezka"]).'"');
  73. header('Content-Transfer-Encoding: binary');
  74. header('Content-Length: '.sprintf('%d', $filesize));
  75. header('Expires: 0');
  76. header('Pragma: no-cache');
  77.  
  78.  
  79. @readfile($wynik["sciezka"]);
  80.  
  81.  
  82. }
  83. }
  84. ?>
  85.  


Nie wydaje mi sie zeby cos tu przeszkadzalo w pobraniu pliku. Goły, sam skrypt na localu tez mi dziala ale w polaczeniu ze strona cos jest nie tak ;/ ;/
Go to the top of the page
+Quote Post

Posty w temacie
- MateuszScirka   [PHP]Problem z headerem i pobieraniem plików   23.01.2010, 11:51:19
- - evolucja   CytatRemember that header() must be called before ...   23.01.2010, 14:42:09
- - MateuszScirka   niekoniecznie, wystarczy na poczatku dac ob_start(...   23.01.2010, 15:08:56
- - b4x   [PHP] pobierz, plaintext $filename = '/home/bleb...   23.01.2010, 15:17:46
- - MateuszScirka   Niestety, treść np. pliku .txt wyświetla mi na str...   23.01.2010, 16:53:15
- - pedro84   Mateusz, spróbuj tego, mi działa, dla pewności wsz...   23.01.2010, 17:17:06
- - MateuszScirka   Niestety, pedro84 - nie działa. Próbowałem tak: [...   23.01.2010, 18:09:02
- - pedro84   Co Ci zwraca var_dump($wynik["nazwa...   23.01.2010, 18:13:31
- - MateuszScirka   nazwę z rozszerzeniem np. tomnet.txt ;P zmienne są...   23.01.2010, 18:23:16
- - pedro84   Ale to niemożliwe Wrzuć gdzieś na www ten plik j...   23.01.2010, 18:25:14
- - MateuszScirka   Oto strona na której możesz zobaczyć co jest nie t...   23.01.2010, 18:35:07
- - pedro84   Eeeee, Mateusz.... nie chcę Cię załamywać, ale.......   23.01.2010, 19:11:49
- - MateuszScirka   Firefox. Pobrało mi 2 kb, nie można otworzyć obraz...   23.01.2010, 19:21:36
- - pedro84   Sprawdź teraz, powinno działac. [PHP] pobierz, pl...   23.01.2010, 19:32:06
- - MateuszScirka   juz cieplej. Niestety przy np pobieraniu archiwum,...   23.01.2010, 19:43:10
- - b4x   [PHP] pobierz, plaintext <?php  $wynik...   24.01.2010, 01:36:20
- - MateuszScirka   b4x, niestety to samo, możecie sprawdzić jak to wy...   24.01.2010, 11:06:31
- - pedro84   Dalej to samo, możesz sprawdzić tutaj. Najlepsze, ...   24.01.2010, 13:40:23
- - MateuszScirka   No właśnie wiem że to samo ;D Nie wiem czemu, podm...   24.01.2010, 13:49:01
- - pedro84   Kod, który napisał Ci b4x musi działać, przynajmni...   24.01.2010, 15:57:29
- - MateuszScirka   A no właśnie... przecież na localu też nie działa ...   24.01.2010, 17:01:42
|- - pedro84   Cytat(MateuszScirka @ 24.01.2010, 17:01...   24.01.2010, 17:27:53
- - MateuszScirka   Ten plik includuje do index.php gdzie mam na pocz....   24.01.2010, 17:41:19
- - pedro84   Ale może w pliku index.php coś jest nie tak? Nie w...   24.01.2010, 18:00:37
- - MateuszScirka   Plik z indexem jest w moim poscie wczesniej. (gdzi...   24.01.2010, 19:26:49
- - b4x   [PHP] pobierz, plaintext <?php  $wynik...   24.01.2010, 19:38:46
- - MateuszScirka   b4x, niestety dalej to samo, problem gdzieś jest p...   24.01.2010, 20:09:46
- - b4x   Ja na Twoim miejscu pobieranie zrobiłbym w osobnym...   24.01.2010, 20:35:13
- - MateuszScirka   Mysle ze wystarczy, dzięki wam obu Tylko jest jed...   24.01.2010, 21:09:13
- - b4x   Nie koniecznie download.php chce pobrać, pewno chc...   24.01.2010, 21:11:08
- - MateuszScirka   Ok już działa wszystko. Dzięki jeszcze raz.   24.01.2010, 21:12:47


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 19:01