Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Header content type
Forum PHP.pl > Forum > PHP
Mapcio
Witajcie, zacznę od tego, że wygóglowałem już sprawę, ale nikt jeszcze chyba takiego problemu nie miał.
Mój problem przedstawia się następująco: Zrobiłem sobie skrypt który wyciąga zdjęcia zapisane w bazie danych(tak, tak, wiem, w bazie nie trzyma się zdjęć, ale moje są małe(128x128) i do tego będzie ich mało). Na localhoscie pięknie mi śmigał, teraz przenoszę się w sieć i pojawił się problem sad.gif.
Skrypt pobiera z bazy treść obrazka, sprawdzałem to, pojawia się setki dziwnych znaków. Jednak gdy wpisze
  1. header("Content-type: image/jpg;");

na początku skryptu, by treść wyświetliła się jako obrazek, otrzymuję pustą stronę.
Czyżby mój serwer nie obsługiwał wyżej wymienionej funkcji?
H4LP M3 PL0X

@edit
Jak by co to daje kod:
  1. <?php
  2. header("Content-type: image/jpg;");
  3.  
  4. include('config.php');
  5. class read
  6. {
  7. function __construct()
  8. {
  9. global $config;
  10. $this->config = $config;
  11. $this->id = intval($_GET['id']);
  12. }
  13. function databaseconnect()
  14. {
  15. mysql_connect($this->config['db_host'], $this->config['db_user'], $this->config['db_pass'])or die(mysql_error());
  16. mysql_select_db($this->config['db_name']);
  17. }
  18. function db_read()
  19. {
  20. $this->databaseconnect();
  21. $this->result = mysql_query('SELECT zdjecie FROM zdjecia WHERE id="'.$this->id.'"');
  22. if (mysql_num_rows($this->result) != 0)
  23. {
  24. $this->row = mysql_fetch_assoc($this->result);
  25. return base64_decode($this->row['zdjecie']);
  26. }
  27.  
  28. }
  29. }
  30. $read = new read();
  31. echo $read->db_read();
  32. ?>
zegarek84
masz włączone na serwerze wyświetlanie błędów (chyba nie...)... localhost masz na winzgrozie?? - może skrypt php otworzyłeś i zapisałeś w notatniku?? (problem z BOM którego nie widać) - przez co wysyłasz treść przed wysłaniem nagłówka...

a najlepiej doinstaluj sobie do mozilli live http hearers i podejżyj odpowiedź lub w dodatku firebug zakładka sieć....
Mapcio
Cytat(zegarek84 @ 25.06.2011, 21:34:34 ) *
masz włączone na serwerze wyświetlanie błędów (chyba nie...)... localhost masz na winzgrozie?? - może skrypt php otworzyłeś i zapisałeś w notatniku?? (problem z BOM którego nie widać) - przez co wysyłasz treść przed wysłaniem nagłówka...

a najlepiej doinstaluj sobie do mozilli live http hearers i podejżyj odpowiedź lub w dodatku firebug zakładka sieć....

Nom, a co jest nie tak z notatnikiem ohmy.gif?
zegarek84
notatnik windowsowy zawsze na początku dodaje niewidoczne znaki nazywane BOM

jeśli chcesz korzystać z czegoś podobnego do notatnika ale lepszego to zainstaluj sobie notepad++ i zapisuj pliki w kodowaniu utf bez BOM
swoją droga polecam IDE Netbeans - ale to kobyła...

BOM to niewidoczne znaczki znajdujące się na poczatku pliku - windowsowe serwery go zazwyczaj lub zawsze pomijają - linuxowe wysyłają tą treść...

po więcej w google hasło php bom

ps taka mała uwaga - jesli już prubujesz pisać obiektow to zrezygnuj z globali - połowicznym rozwiązaniem są zmienne statyczne ale też raczej ich unikaj - jednak na początek lepiej satyczne niż globale... więc $config albo przekaż jako parametr konstruktora albo przypisz przed wywołaniem klasy do zmiennej statycznej... z kolei id które pobierasz w get przekaż jako parametr konstruktora a nie tak jak robisz...
mls
Cytat(Mapcio @ 25.06.2011, 21:44:57 ) *
Nom, a co jest nie tak z notatnikiem ohmy.gif?


To, że później pojawiają się nowe wątki takie jak ten. Oraz to, że nie podświetla składni przez co pojawiają się inne wątki ("bo mi wyskakuje error taki i owaki"). Pisanie skryptów w "notatniku" wyszło już dawno z mody.
Mapcio
Cytat(mls @ 25.06.2011, 23:32:15 ) *
To, że później pojawiają się nowe wątki takie jak ten. Oraz to, że nie podświetla składni przez co pojawiają się inne wątki ("bo mi wyskakuje error taki i owaki"). Pisanie skryptów w "notatniku" wyszło już dawno z mody.

Nie spinaj się tak, poprawiałem w nim tylko trochę kod, nic poza tym. A o BOM wcześniej nic nie wiedziałem.

@edit
Pobrałem notepad++ i zmieniłem kodowanie na UTF-8(bez BOM). Nic to nie dało.

@edit
Ja pierrrrr...
Nie zauważyłem kropki w pliku z configiem. Nie wyskoczył żaden błąd nią spowodowany, mój edytor Zend Studio jej nie podkreślił a sama była wręcz niewidoczna. Wiem, jestem idiotą. Dzięki za uświadomienie mi co to BOM smile.gif
zegarek84
gdyż sama kropka, jakikolwiek tekst przed skryptem PHP oraz sam BOM nie są błędami - na serwerze włącz sobie raportowanie błędów a dowiesz się, że błąd spowodowała funkcja header("Content-type: image/jpg;"); - a dlaczego?? - gdyż już jakaś treść została wysłana a więc nie możesz ustawić nagłówków odpowiedzi...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.