Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Funkcja header
Forum PHP.pl > Forum > Przedszkole
darko632
Witam.
Od razu przejde do rzeczy. Piszę skrypt który po uploadowaniu zdjęć otwiera je w przeglądarce z wykorzystaniem GD za pomocą funkcji header. Funkja ta pobiera nazwe i rozszezenie pliku za pomocą $_FILE i getimagesize, problem polega na tym ze header nie moze być poprzedzony znacznikami html itp bo sie wykrzaczy. wiem ze sa metody z uzyciem ob_start() i ob_end_flush() ale ta metoda mi nie pomaga. chodzi o to ze musze umiescic menu na stronie gdzie beda ładowały sie te zdjecia a nie moge wstawic nic poza skryptem który mi to wczytuje bo przestaje działać, tzn nie otwiera sie obrazek tylko wyswietla sie http://host/pokaz.php (moze dlatego ze nazwa obrazka pobierana jest z przesyłanego formularza, a ob_start czysci bufor i nie znajduje obrazka) , a jak usune ob_start() i ob_end_flush() to wogóle sie wykłada. Wie ktos moze jak to rozwiazaćquestionmark.gif Będę wdzięczny za wszelkie podpowiedzi.
essey
Podstawowe pytanie: chcesz wyświetlić TYLKO zdjęcie? Czy może całą stronę ze zdjęciem "gdzieś" wstawionym?

Zakładam, że masz na stronie formularz, którym wczytujesz te zdjęcia na serwer - zgadza się?
Z tego co zrozumiałem, funkcję odpowiedzialną za to jak i wyświetlenie umieściłeś gdzieś w treści strony. Dlaczego nie zrobisz tego na początku pliku?
Jeżeli zdecydowałeś się na to drugie rozwiązanie, czyli wstawka, to musisz pobierać zdjęcie w osobnym pliku, tam wykonywać header i print, i includowac ten plik do strony docelowej.
darko632
Próbowałem tak jak napisałeś (z includem) ale nic to nie dało, a funkcja header jest na początku pliku i wyświetla mi ten obrazek, ale nie mogę zrobić menu do niego. To ma być strona ze zdjęciem wstawionym (uploadowanym z dysku) na środku do edycji, a z boku menu. Ma ktoś może jeszcze jakiś pomysł?
uzi123
To co wypluwasz poleceniem
  1. header('Content-Type: image/jpeg')
to informacja o typie, a to co wypluwasz już poleceniem
  1. imagejpeg
(lub podobnym) to już zwykła grafika. W zwiazku z tym wstawiasz w kodzie html twojej stron plik graficzny jak by nigdy nic, np.:
  1. <img src='./mini.php?id=4554&innyparametr=zajac' />

a w skrypcie mini.php generujesz odpowiednio swoją grafikę.

Inaczej się nie da (jpg też do txt nie wstawisz).

----
Edit
na moje oko to poczytaj sobie na początek o AJAX, powinno pomóc.
darko632
Chyba trochę żle napisałem, bo sie nie zrozumieliśmy. Chodzi mi o to ze przesyłam zdjecie na serwer przez formularz i ma ono byc wyswietlone do edycji, z formularza pobieram nazwe i typ mime i wszystko wyswietla, tylko ze nie moge nic dodac na stronie do zdjecia (chodzi i menu) bo przestaje dzialac. oto kod ktory pobiera nazwe i wyswietla obrazek
  1. $plik_tmp = $_FILES['plik']['tmp_name'];
  2. $plik_nazwa = $_FILES['plik']['name'];
  3. $plik_rozmiar = $_FILES['plik']['siz'];
  4. if(is_uploaded_file($plik_tmp)) {
  5. move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
  6. }$size = getimagesize("upload/$plik_nazwa");
  7. $fp=fopen("upload/$plik_nazwa", 'rb');
  8.  
  9. if ($size && $fp)
  10. {
  11. header("Content-Type: {$size['mime']}");
  12.  
  13. fpassthru($fp);
  14. }
  15.  
  16. //w zasadzie wyswietlanie dzila do tego miejsca
  17.  
  18. if($size['mime']=='image/gif'){//jeśli obrazek to gif
  19. $image = @imagecreatefromgif('upload/'.$plik_nazwa);
  20. }elseif($size['mime']=='image/jpeg' or $size['mime']=='image/jpg'){//jeśli jpg
  21. $image = @imagecreatefromjpeg('upload/'.$plik_nazwa);
  22. }elseif($size['mime']=='image/png'){//jesli png
  23. $image = @imagecreatefrompng('upload/'.$plik_nazwa);
  24. }
  25.  
  26.  
  27.  
  28. if($size['mime']=='image/gif'){//jeśli obrazek to gif
  29. @imagegif($image,NULL,90);
  30. }elseif($size['mime']=='image/jpeg' or $size['mime']=='image/jpg'){//jeśli jpg
  31. @imagejpeg($image,NULL,90);
  32. }elseif($size['mime']=='image/png'){//jesli png
  33. @imagejpeg($image,NULL,90);
  34. }

I jeszcze nie dziala mi edytowanie, jak wstawie jakis np filtr to nic sie nie zmienia.

uzi123 moze i ajax jest dobry ale wolałbym, jezeli da rady bez uzywania go.



Prosze pomóżcie, jak zrobic zeby wczytywało obrazek wysłany przez formularz i edytowało go (dla oreslonych formatów jpg, pgn i gif) bo mi to nie działa. Czy można zapamietać gdzieś nazwe i typ mime obrazka, tak zeby odwołać sie do niego z innego skryptu??
kreciko
Cytat(darko632 @ 7.05.2010, 15:44:17 ) *
Chyba trochę żle napisałem, bo sie nie zrozumieliśmy. Chodzi mi o to ze przesyłam zdjecie na serwer przez formularz i ma ono byc wyswietlone do edycji, z formularza pobieram nazwe i typ mime i wszystko wyswietla, tylko ze nie moge nic dodac na stronie do zdjecia (chodzi i menu) bo przestaje dzialac. oto kod ktory pobiera nazwe i wyswietla obrazek


Dobrze napisałeś, tylko nie rozumiesz ideii oraz odpowiedzi uzi123

Masz 3 skrypty napisane w php
1) formularz.php - on zbiera dane: plik, rozmiar i typ
2) obrazek.php?f=obrazek.png - on wyświetli surowy obrazek, zgodnie z formularz.php
3) edycja.php - on wstawi sobie obrazek oraz doda możliwość edycji
w kodzie edycja.php będzie takie coś:
Kod
.....
<img src="obrazek.php?f=obrazek.png></img>
<a href=utnij.php?.....
........
darko632
To już chyba zrozumiałem, ale mam jeszcze pytania:
Cytat
<img src="obrazek.php?f=obrazek.png></img>

jak w miejsce obrazek.png wczytywac nazwe obrazka przeslanego w formularzu?
I jeszcze jak dane z formularz.php (nazwa typ itp) przekazywac do innych skryptów?
kreciko
Cytat(darko632 @ 7.05.2010, 20:27:42 ) *
jak w miejsce obrazek.png wczytywac nazwe obrazka przeslanego w formularzu?
I jeszcze jak dane z formularz.php (nazwa typ itp) przekazywac do innych skryptów?


W sumie można by o tym książkę napisać. I jakąś powinieneś przeczytać. Nie opiszę Ci tu wszystkiego bo mam inne zajęcia, ale powinieś się zainteresować czymś takim jak przekazywanie zmiennych metodą post i get. Dodatkowo przechowywaniem plików graficznych w bazie danych. Miłej nauki.
darko632
Pliki graficzne maja być przechowywane na serwerze, a metody POST i GET znam, tylko nie mogę zrobić przekazywania danych z tej metody do innych skryptów poza formularz.php
kreciko
To będzie mój ostatni post w tym temacie.

Masz jeden skrypt:

Kod
formularz.php:
<?php
$var = 'zmienna';
include 'skrypt.php?p='.$var;
?>


Kod
skrypt.php:
<?php
$var2 = $_GET['p'];
echo $var2;
?>


skrypt.php wyświetli zawartość zmiennej $var z pliku formularz.php. Tutaj używamy metody post
darko632
Mam jeszcze pytanie, czy w tym kodzie:
  1. $plik_tmp = $_FILES['plik']['tmp_name'];
  2. $plik_nazwa = $_FILES['plik']['name'];
  3. $plik_rozmiar = $_FILES['plik']['siz'];
  4. if(is_uploaded_file($plik_tmp)) {
  5. move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
  6. }
  7. $size = @getimagesize("upload/$plik_nazwa");
  8. $fp=fopen("upload/$plik_nazwa", 'rb');
  9.  
  10. if ($size && $fp)
  11. {
  12. @header('Content-Type: '.$size['mime']);
  13.  
  14. fpassthru($fp);
  15. }
  16.  
  17. if($size['mime']=='image/gif'){//jeśli obrazek to gif
  18. $image = @imagecreatefromgif('upload/'.$plik_nazwa);
  19. }elseif($size['mime']=='image/jpeg' or $size['mime']=='image/jpg'){//jeśli jpg
  20. $image = @imagecreatefromjpeg('upload/'.$plik_nazwa);
  21. }elseif($size['mime']=='image/png'){//jesli png
  22. $image = @imagecreatefrompng('upload/'.$plik_nazwa);
  23. }
  24.  
  25. imagefilter($image, IMG_FILTER_NEGATE);
  26.  
  27. if($size['mime']=='image/gif'){//jeśli obrazek to gif
  28. @imagegif($image);
  29. }elseif($size['mime']=='image/jpeg' or $size['mime']=='image/jpg'){//jeśli jpg
  30. @imagejpeg($image);
  31. }elseif($size['mime']=='image/png'){//jesli png
  32. @imagejpeg($image);
  33. }

jest bląd? bo powinien pojawic sie obrazek z filtrem (negatyw) a wyświetla tyko zwykły (taki jak uploadowany) obraz.
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.