Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] header jpg - wyświetla lub lub nie, w zależności od języka
Forum PHP.pl > Forum > PHP
Dopler
Piszę bo w ogóle nie wiem jak się zabrać za problem. Występuje on w konkretnej bazie - ale chyba jest problemem ogólniejszym.

Mam mały plik php który służy do pobrania z bazy MSQL danych o miniaturce obrazka (wg ID) i wyświetla ten obrazek.

Plik działa w Galerii Coppermine (ale został napisany niezależnie)

Problem polega na tym że wyświetlanie działa tylko jeśli Baza działa pod językiem angielskim, gdy zmieniam ją na polski wypisuje mi komunikat:
"Obrazek "adres_pliku_php" nie może być wyświetlony ponieważ zawiera błędy"

Wydaje mi się że chodzi tutaj o jakieś kodowanie - w zwrotnej readfile(urldecode

Podaje cały kod tego pliku odpowiedzialnego za wyświetlenie:

  1. <?php
  2.  
  3. define('IN_COPPERMINE', true);
  4. require 'include/init.inc.php';
  5.  
  6. $pid = $superCage->get->getInt('id');
  7. $result = cpg_db_query("SELECT filename, filepath, url_prefix FROM {$CONFIG['TABLE_PICTURES']} WHERE pid = $pid $ALBUM_SET");
  8.  
  9. if (!mysql_num_rows($result)) {
  10. die('Unknown picture');
  11. }
  12.  
  13. $row = mysql_fetch_assoc($result);
  14. $thumb = get_pic_url($row, 'thumb');
  15. $type = cpg_get_type($row['filename']);
  16.  
  17. header('Content-type: image/jpeg');
  18.  
  19. readfile(urldecode($thumb));
  20.  
  21. ?>

Oto adres galerii
www.genealogia.okiem.pl/foto2

a to jest przykładowy adres do obrazka
http://www.genealogia.okiem.pl/foto2/thumb.php?id=48235

Jeśli się przejdzie do strony głównej i zmieni język (mała flaga na dole menu po lewej) to obrazek się wyświetli


Może ktoś się ulituje i spróbuje coś pomóc ?

===edycja===
udało mi się nieco przybliżyć w czym tkwi problem - choć dalej nie iem jak go rozwiązać

1. Problem jest taki sam zarówno po IE jak i pod FF
2. Obrazek który się niewyświetla nie ma "typu"

Wygląda na to że plik pobiera dane z cookiesa - jaki język Galerii miałem ostatnio - i jeśli jest to polski - to obrazek nie ma typu.

Plik thumb.php - kodowałem na różne sposoby ANSI ZTF-8 bez BOM i z BOM. Gdy jest w ZTF-8 z BOM obrazek jest wyświetlany tak jak w notatniku. Podobnie rzecz się ma gdy wprowadzę header('Content-type: text/html'); A więc obrazek jest pobierany, tylko system nie wi jak go wyświetlać - pomimo istnienia header.

Dalej nie mam pojęcia w czym w ogóle tkwi problem ?
maniana
W takich przypadkach komentujesz linię z wysyłaniem headera informującego przeglądarkę, że to plik graficzny...
Wyłącz a zobaczysz ew błędy, lub zdebuguj sobie zmienną będącą parametrem readfile.
Dopler
dzięki za pomoc - oczywiście slaszowałem wszystko po kolei i podmieniałem na różne rzeczy i nic.

ale okazało się że problem tkwi w białych spacjach (white spaces).

Jeden z plików językowych (plugina) był zakodowany w UTF-8 z BOM - a wszystkie powinny być "bez BOM".

Taka wredność - trzy dni się męczyłem.
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.