generowanie obrazka i jego wywołanie

Odpowiedz Nowy wątek
2011-09-27 14:20
Jan
0

mam plik obrazek.php, który ma zawartość

<?php
$image_URL = "img1.png";
$font = './verdana.ttf';
$image = imagecreatefrompng($image_URL);
$text_colour = imagecolorallocate($image,215,213,220);
$text="tekst, który dynamicznie się zmienia, więc nie mogę zapisać gotowego obrazka na serwerze";
imagettftext($image,8,0,57,41,$text_colour,$font,$text);
header( "Content-type: image/png" );
imagepng($image);
imagedestroy($image);
.?>

Tworzę nim stronę z obrazkiem, który wypełniam tekstem.

Wszystko działa ładnie pięknie ale mój problem polega na tym, że chcę ten wygenerowany obrazek wrzucić na innej stronie na forum, a dając ścieżkę do wygenerowanego obrazku jako http://...ścieżka.../obrazek.php forum nie widzi tej strony jako obrazek tylko jako stronę PHP.
Jak wywołać ze strony forum wygenerowany obrazek a nie stronę php, na której on się znajduje?

Pozostało 580 znaków

2011-09-27 14:33
0

Zapewne używasz forum, które wymaga odpowiedniego rozszerzenia obrazka (co jest idiotyzmem) i nie łyka .php na końcu linku. Zainteresuj się mod_rewrite. Powinno rozwiązać problem jeśli po normalnym wejściu widzisz obraz, a forum go nie łyka.


Women were the reason I became a monk - and, ah, the reason I switched back...

Pozostało 580 znaków

2011-09-27 18:12
0

lub po prostu skorzystaj z prostego tricku i podaj ścieżkę http://example.com/obrazek.php/dowolny_tekst.jpg (gdzie obrazek.php jest skryptem a dowolny_tekst.jpg to tylko tekst który zostanie wysłany do skryptu w $_SERVER['PATH_INFO'])
ale jak wyżej - upewnij się że wchodząc pod ten adres przez przeglądarkę widzisz normalnie obrazek


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
edytowany 3x, ostatnio: unikalna_nazwa, 2011-09-27 18:21
Zadziała tylko jak na serwerze jest włączone wsparcie PATH_INFO. - Demonical Monk 2011-09-27 18:14
czyli praktycznie wszędzie jeśli serwerem jest Apache... - unikalna_nazwa 2011-09-27 18:18
No nie wiem, ja tam się wydajnościowo PATH_INFO nie zachwycam, tak jak całą ideą .htaccessów (czyt. pierdyliard plików do sparsowania przed wykonaniem 1 requestu) - Demonical Monk 2011-09-27 18:19
no mi się ostatnio spodobała idea przekierowywania całego ruchu do jednego skryptu za pomocą wprawdzie jednego tylko pliku .htaccess (lub odpowiednika) ale domyślam się że nie jest to zbyt dobre wydajnościowo. No ale szczerze jeszcze nigdy się nie zajmowałem stroną przy której musiałbym się tym martwić. W sumie przy ładowaniu wszystkich statycznych plików z innego serwera wydaje mi się że to wcale nie najgorsze rozwiązanie (mimo że część obowiązków httpd jest zrzucana na język skryptowy...) - unikalna_nazwa 2011-09-27 18:28

Pozostało 580 znaków

2011-09-27 21:03
Jan
0

A co jeśli w adresie skryptu są dane wysłane GET-em? Obrazek.php jest szkieletem, do którego przesyłam dane. Przykładowo adres może wyglądać tak:
....ścieżka..../obrazek.php?id=123456&kolor=4
Czy w tym przypadku też stosować obrazek.php?id=123456&kolor=4/dowolny_tekst.jpg ?

Pozostało 580 znaków

2011-09-27 21:08
0

Spróbuj oszukać forum:

obrazek.php?id=1234&kolor=4&n=/obrazek.jpg

Ciekawe czy łyknie... Jeśli nie zadziała polecam mod_rewrite, wtedy masz linki w stylu:

obrazek-1234-4.jpg


Women were the reason I became a monk - and, ah, the reason I switched back...

Pozostało 580 znaków

2011-09-27 21:53
0

jak już pisałem możesz skorzystać z tego tekstu który przesyłasz, czyli możesz mieć link w postaci:

/obrazek.php/123456/4.jpg

i za pomocą PHP wyciągnąć z $_SERVER['PATH_INFO'] potrzebne dane
przykładowo:

preg_match('|^/(?<id>\d+)/(?<kolor>\d+)|', $_SERVER['PATH_INFO'], $data)
    or die('Złe wywołanie skryptu');
$_GET += $data;

po tych dwóch linijkach możesz już korzystać ze skryptu normalnie tak jak przedtem (dane dopiszą się do standardowej tablicy $_GET)

możesz też użyć mod_rewrite, pozwoli Ci to pozbyć się z adresu cząstki ".php"


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
edytowany 1x, ostatnio: unikalna_nazwa, 2011-09-27 22:03
note: w PHP < 5.2.2 trzeba pisać ?P<...> zamiast ?<...> - unikalna_nazwa 2011-09-28 00:34

Pozostało 580 znaków

2011-09-28 11:12
Jan
0

mod_rewrite zadziałało tak jak powinno.
Dzięki za pomoc.
Pozdrawiam

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0