Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Cannot modify header information - headers already sent by
Forum PHP.pl > Forum > Przedszkole
jimmix
Witam,

Wiem że ten temat był poruszany na forum wielokrotnie ale nie znalazłem rozwiązania następującego problemu - jak zawrzeć w stronie klika nagłówków odpowiednich do treści zawartych w stronie ?.
W swoim szablonie strony muszę najpierw mieć nagłówek mówiący o tym że tekst jest w kodowaniu UTF-8 bo inaczej wyświetlają się krzaki. Oczywiście jak chcę dalej w treści wyświetlić jakiś obrazek to zastosowanie np kodu:

  1. <?php
  2.  
  3. header ("Content-type: image/jpeg");
  4.  
  5. $plik="wm.jpg";
  6. $rysunek=imagecreatefromjpeg ($plik);
  7.  
  8. imagejpeg($rysunek);
  9. imagedestroy($rysunek);
  10.  
  11.  
  12. ?>


Powoduje komunikat "Cannot modify header information - headers already sent by"

Proszę tylko nie odpisujcie że temat był poruszany tyle a tyle razy bo w żadnym z poruszonych odpowiedzi nie znalazłem na moje pytanie. Hmm. może by tak któryś wątek z cyklu "Cannot modify header information - headers already sent by" przykleić ?
Spawnm
jak chcesz wyświetlić obrazek przez gd to nie możesz wyświetlić textu w tym samym pliku.
jimmix
Jak rozumiem, zrobić osobny plik który tylko będzie miał kod wyświetlania obrazka w php np: "generuj_obrazek.php"
a potem w dokumecie strony która zawiera już tekst i inne elementy includować czy jakoś tak ? Może podać zamiast ścieżki do pliku obrazka
Kod
<img src="generuj_obrazek.php" />
Spawnm
dokładnie smile.gif
jimmix
Super, wszystko działa jak należy gdy mam plik:

"generuj_obrazek.php"
  1. <?php
  2.  
  3. header ("Content-type: image/jpeg");
  4.  
  5. $plik="wm.jpg";
  6. $rysunek=imagecreatefromjpeg ($plik);
  7.  
  8. imagejpeg($rysunek);
  9. imagedestroy($rysunek);
  10.  
  11. ?>


Oraz gdzieś w html-u stronki odnośnik do obrazka:

Kod
<img src="generuj_obrazek.php" />


Pytanie teraz tylko jak mam przekazać parametry do "generuj_obrazek.php" np z nazwą pliku, czy rozdzielczoscia obrazka jaki ma byc wygenerowany ? jeśli w htmlu umieszczę np:

Kod
jakiś kod html....

<?php


$plik='wm.jpg';
$rysunek=imagecreatefromjpeg ("$plik");
    print ('<img src="generuj_obrazek.php" />');
?>

... dalsza część html


A plik "generuj_obrazek.php" będzie wyglądał następująco:

  1. [php]<?php
  2.  
  3. header ("Content-type: image/jpeg");
  4.  
  5. imagejpeg($rysunek);
  6. imagedestroy($rysunek);
  7.  
  8. ?>


To zmiena $rysunek nie jest w nim widoczna - wobec czego nie wyświetla się obrazek.

Chciałbym napisać uniwersalną funkcję generującą miniaturki o zadanym rozmiarze dlatego nie mogę w samym pliku "generuj_obrazek.php" mieć ustawionych na sztywno rozmiarów a i pozostaje także podawanie ścieżki do pliku jakoś rozwiązać - Czy jedynie użycie zmiennych globalnych jest rozwiązaniem ?
Spawnm
$_GET i przez nazwę smile.gif
megawebmaster
To napisz funkcję. Sam sobie odpowiedziałeś na pytanie winksmiley.jpg
Spawnm
Cytat(megawebmaster @ 1.05.2009, 19:13:08 ) *
To napisz funkcję. Sam sobie odpowiedziałeś na pytanie winksmiley.jpg

twój post nic nie wnosi do dyskusji , user pytał się o przesyłanie danych ...
megawebmaster
Ten Twój post również nic nie wnosi, a poprzedni jest bez sensu. Pytał się o przekazywanie danych - odpowiedziałem. Niech napisze sobie funkcję. Potem proste wywołanie i może przekazać tyle parametrów ile chce.
jimmix
Zrobiłem tak:

kod html:
Kod
jakiś kod html....

<?php

$_GET['plik']='wm.jpg';

    print ('<img src="generuj_obrazek.php" />');
?>

... dalsza część html...


"generuj_obrazek.php"
  1. <?php
  2.  
  3. header ("Content-type: image/jpeg");
  4.  
  5. $rysunek=imagecreatefromjpeg ($_GET['plik']);
  6.  
  7. imagejpeg($rysunek);
  8. imagedestroy($rysunek);
  9.  
  10. ?>


i niestety nie działa - w pilku "generuj_obrazek.php" $_GET['plik'] ma wartość zero
Spawnm
<img src="generuj_obrazek.php?plik=cos.jpg" />



  1. <?php
  2.  
  3. header ("Content-type: image/jpeg");
  4. $plik=$_GET['plik'];
  5. $rysunek=imagecreatefromjpeg ($plik);
  6.  
  7. imagejpeg($rysunek);
  8. imagedestroy($rysunek);
  9.  
  10. ?>
jimmix
No tak, dzięki za przypomnienie jak przekazywane są zmienne do tablicy $_GET winksmiley.jpg
megawebmaster
Nie lepiej byłoby jednak w ten sposób?
  1. <?php
  2. function drawImage($image){
  3. header ("Content-type: image/jpeg");
  4. $rysunek=imagecreatefromjpeg ($image);
  5.  
  6. imagejpeg($rysunek);
  7. imagedestroy($rysunek);
  8. }
  9. ?>

Dołączasz sobie ten plik na początku, a tam gdzie chcesz, żeby był obrazek wygenerowany dajesz
  1. <?php
  2. drawImage('jakisrysunek.jpg');
  3. ?>

I tyle tongue.gif Możesz z tego korzystać tyle razy ile zechcesz za jednym dołączeniem pliku. Optymalizacja, optymalizacja winksmiley.jpg
Hectic
Cytat(megawebmaster @ 2.05.2009, 11:23:33 ) *
Nie lepiej byłoby jednak w ten sposób?
  1. <?php
  2. function drawImage($image){
  3. header ("Content-type: image/jpeg");
  4. $rysunek=imagecreatefromjpeg ($image);
  5.  
  6. imagejpeg($rysunek);
  7. imagedestroy($rysunek);
  8. }
  9. ?>

Dołączasz sobie ten plik na początku, a tam gdzie chcesz, żeby był obrazek wygenerowany dajesz
  1. <?php
  2. drawImage('jakisrysunek.jpg');
  3. ?>

I tyle tongue.gif Możesz z tego korzystać tyle razy ile zechcesz za jednym dołączeniem pliku. Optymalizacja, optymalizacja winksmiley.jpg


Albo ja jestem jakiś inny, albo wychodzi na to samo? Pierwszy sposób jest nawet wygodniejszy bo nie musi do html wpieprzać tagów php? Może się mylę...
decha-design
Cytat(megawebmaster @ 2.05.2009, 11:23:33 ) *
Nie lepiej byłoby jednak w ten sposób?
  1. <?php
  2. function drawImage($image){
  3. header ("Content-type: image/jpeg");
  4. $rysunek=imagecreatefromjpeg ($image);
  5.  
  6. imagejpeg($rysunek);
  7. imagedestroy($rysunek);
  8. }
  9. ?>

Dołączasz sobie ten plik na początku, a tam gdzie chcesz, żeby był obrazek wygenerowany dajesz
  1. <?php
  2. drawImage('jakisrysunek.jpg');
  3. ?>

I tyle tongue.gif Możesz z tego korzystać tyle razy ile zechcesz za jednym dołączeniem pliku. Optymalizacja, optymalizacja winksmiley.jpg


No i co Ci to da? Jakbyś nie wiedział informatyku, to cały ten kod funkcji i tak musi być w osobnym pliku (nie można wyświetlić pliku graficznego i tekstu w jednym dokumencie do jasnej cholery, było już o tym nawet w tym poście), to na pierona robić do tego funkcję, do funkcji pakować headera i ją wykonywać jak można to napisać tak jak podał Spawnm.
megawebmaster
Ok, mea culpa. Wycofuję oskarżenia.
Kshyhoo
Witam. Podłączę się, póki ten wątek jeszcze nie zamknięty (mój zamknęli) ;p
Mam ten sam problem. Nie mogę załadować danych do pliku, gdzie ma być obrabiana grafika. POST nie sięga, próbowałem przez GET i SESSION... Jeżeli na sztywno podam ścieżkę do grafiki, wszystko gra.
Plik do obróbki grafiki sklej02.php
Kod
header ("Content-type: image/png");
   $obraz1 = $_SESSION['obraz1'];
   //$obraz1 = "http://localhost/herb/graf2/p02/white/c001.png";
   $rysunek=imagecreatefrompng ($obraz1);
  
   imagepng($rysunek);
   imagedestroy($rysunek);

I skrypt, który wywołuje powyższy krok3.php
Kod
            $p02 = "p02";
               $adres = $url."/".$sciezka2."/".$p02;
               $kolor1 = $_POST['kolor1'];
               $kolor2 = $_POST['kolor2'];
               $obraz1 = $adres."/".$kolor1."/c001.png";
               $obraz2 = $adres."/".$kolor1."/c002.png";
               $_SESSION['adres'] = $adres;
               $_SESSION['kolor1'] = $kolor1;
               $_SESSION['kolor2'] = $kolor2;
               $_SESSION['obraz1'] = $obraz1;
               $_SESSION['obraz2'] = $obraz2;
              
               echo "<img src='".$adres."/sklej02.php?obraz1='c001.png'>
   ";

Jak widać, niektóre zmienne pobieram z POSTa (to działa). Coś mi mówi, że źle kombinuję z linkiem do wywołania obrazka, zamiast grafiki mam "krzyżyk" i link "http://localhost/herb/graf2/p02/sklej02.php?obraz1="...
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.