Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> generowanie w locie pliku z danymi - lokalnie dziala na serwerze nie
mario
post 9.02.2010, 09:12:33
Post #1





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 23.09.2003
Skąd: Siemianowice Śląskie

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


Witam!!!

Mam problem z wygenerowaniem pliku gdzie dane sa generowane w locie. Ponizej kod mojej funkcji. W praktyce dziala to tak, ze jest wyswietlana strona. Tresc ktora chce zapisac jest buforowana do sesji, user poprzez przycisk moze sobie pobrac np. do PDF'a dane ktore widzi czy wydrukowac itp. Dane do sesji czyli do funkcji wchodza bez problemu, mam problem tylko z wypluciem tego do przegladarki tak aby wyswietlil sie monit o otwarcie lub zapisanie pliku.

Oto moj kod

  1.  
  2.  
  3. function generuj($plik="", $dane="")
  4. {
  5. If ((!empty($plik)) and (!empty($dane)))
  6. {
  7.  
  8. header("Content-Description: File Transfer");
  9. header("Content-Type: text/html");
  10. header("Content-Disposition: attachment; filename=" . $plik);
  11. header("Content-Transfer-Encoding: binary");
  12. header("Expires: 0");
  13. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  14. header("Pragma: public");
  15. header("Content-Length: " . mb_strlen($dane));
  16.  
  17. echo $dane;
  18. }
  19. }
  20.  
  21.  

Kod ten wykonuje sie prawidlowo na lokalnej maszynie ale na serwerze hostingowym juz nie, co moze byc tego przyczyna? Zle wysylane naglowki czy w nieodpowiedniej kolejnosci? Brakuje jakiegos naglowka? Prosze o podpowiedzi.



--------------------
W życiu piękne są tyko chwile....
Życie choć piękne tak krótkie jest....
Wystarczy chwila by zgasić je....
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Fifi209
post 9.02.2010, 09:16:12
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(mario @ 9.02.2010, 09:12:33 ) *
Kod ten wykonuje sie prawidlowo na lokalnej maszynie ale na serwerze hostingowym juz nie, co moze byc tego przyczyna? Zle wysylane naglowki czy w nieodpowiedniej kolejnosci? Brakuje jakiegos naglowka? Prosze o podpowiedzi.

Możliwe, że na hostingu masz inne ustawienia w php.ini etc. Pisałeś wcześniej o sesji, mógłbyś pokazać jak przekazujesz dane z sesji do funkcji? (chcę wykluczyć register globals)


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
mario
post 9.02.2010, 09:38:29
Post #3





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 23.09.2003
Skąd: Siemianowice Śląskie

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


dane do sesji zapisuje w nastepujacy sposob:

  1.  
  2. #
  3. # kod ktory generuje dane na stronie
  4. #
  5.  
  6. $_SESSION["drukuj"] = ob_get_contents();


link op kliknieciu ktorego odwoluje sie do funkcji generuj ktora ma mi wypluc dane do pliku w locie standardowy
  1. <a href="drukuj.php">zapisz jako PDF</a>


i w pliku drukuj.php

  1.  
  2. generuj ("export.pdf", $_SESSION["drukuj"]);


niewazne czy z sesji czy z palca nie wypluwa zapytania o plik a wyswietla na stronie

musze poszperac w ustawieniach configu serwera byc moze tam bedzie diabel schowany, zmienne globalne wylaczone na 100%, php5 - www.nazwa.pl

Ten post edytował mario 9.02.2010, 12:23:27


--------------------
W życiu piękne są tyko chwile....
Życie choć piękne tak krótkie jest....
Wystarczy chwila by zgasić je....
Go to the top of the page
+Quote Post
Fifi209
post 9.02.2010, 15:26:56
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Moje niedopatrzenie, to:
  1. header("Content-Type: text/html");


na np.:
  1. header('Content-Type: application/pdf');
  2.  
  3. //lub
  4. header("Content-Type: application/force-download");


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
altruista2
post 9.02.2010, 19:31:27
Post #5





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Temat: Donwloadowanie w PHP

  1. function generuj($file, $tresc) {
  2. header('Content-Description: File Transfer');
  3. header('Content-Type: application/octet-stream');
  4. header('Content-Disposition: attachment; filename='.basename($file));
  5. header('Content-Transfer-Encoding: binary');
  6. header('Expires: 0');
  7. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  8. header('Pragma: public');
  9. header('Content-Length: ' . strlen($tresc));
  10. flush();
  11. echo $tresc;
  12. flush();
  13. }


Tyle smile.gif

Ten post edytował altruista2 9.02.2010, 19:32:02


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post
mario
post 10.02.2010, 08:52:29
Post #6





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 23.09.2003
Skąd: Siemianowice Śląskie

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


dziekuje Wam za pomoc, okazalo sie ze bardzo pomocna byla funkcja headers_list gdzie podejrzalem jakie naglowki wysyla mi skryt, obie funkcje zarowno moja jak i altruista2 sa poprawne. moj blad ze poprzez zle generowanie strony gdzies po drodze wysylalem inne naglowki i stad nie wypluwalo mi pliku, musialem znalezc miejsce gdzie podmienialo mi naglowki i poszlo winksmiley.jpg

jeszcze raz wielkie dzieki za pomoc!


--------------------
W życiu piękne są tyko chwile....
Życie choć piękne tak krótkie jest....
Wystarczy chwila by zgasić je....
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:37