Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: (PHP, gd) dynam. grafika- pusty plik PNG gdy przesylam zdanie ze spacją
Forum PHP.pl > Forum > PHP
vereb
Witam
Szukałem, szukałem, lecz nie znalazłem. Piszę pracę dyplomowa na temat dynamicznego generowania grafiki przez PHP. Dane są przesyłane poprzez zmienne do skryptu który przekształca je w plik PNG. Problem w tym że przy przesłaniu tekstu gdzie nie ma spacji- wszystko działa, ale gdy tylko wpiszę spacje plik się generuje ale jest on pusty. Jeśli spróbuje wpisać znak "+" to w wygenerowanym pliku PNG pojawia się znak spacji, a nie "+".
Próbowałem już sprawdzać co jest przesyłane przez formularz, ciąłem to na pojedyńcze znaki i próbowałem zastapić np znaki spacji na znak "+" (nie działa, tzn. zmienne się modyfikują, ale plik PNG dalej jest pusty). Próbowałem użyć funkcji "urlencode" (czy jakoś tak) - ale też nie działa.
Skończyły mi się pomysły...

Oto kawałek kodu generującego PNG:

$licznik=1; // $licznik okresla którą linijkę tekstu obrabiamy
while ($licznik <= "$przekaznik") {
imagettftext($im, $fl_size[$licznik], 0, $x[$licznik], $text_hight[$licznik], $czarny, $font[$licznik], $string[$licznik]); //tworze obraz z wczytanej linii
$licznik++;
$przesuniecie=$przesuniecie+$przesuniecie;
};

//Export obrazka i zwolnienie pamieci

ImagePng($im);
ImageDestroy($im);

Pomożecie??
krowal
A co dokładnie znajduje się w zmiennej $string ? jeśli to tablica to zrób print_r($string) i pokaż co ci wyświetli.
Darti
Moze zmien metode przesylania danych z formularza z GET na POST ?
vereb
sprawdzalem i GET i POST- nie ma różnicy (obecnie potrzebuje metody POST do przesyłania pliku na serwer)
Sprawdziłem to co napisał krowal ale z danymi wprowadzonymi z palucha a nie z formularza i wszystko gralo wiec rzeczywiscie problem jest w przesyłaniu zmiennych z formularza. Musze jeszcze wyjasnic ze całość wyglada nastepujaco:
- mam plik form1.php z formularzem
- dane z ww formularza przesyłane są do skryptu proba.php ktory zamienia dane ze zmiennych na plik PNG
- wynik ze skryptu proba.php jest (wraz ze zmiennymi wczesniej przeslanymi) przesyłany spowrotem do pliku form1.php i jest wyswietlany poprzez <img src="proba.php?ciąg_zmiennych_ze_skryptu"> i tak w kółko
franki01
Moglbys pokazac wiekszy fragment skryptu (używając ]php[)?

A tak w ogole to linijka:
  1. <?php
  2. $przesuniecie=$przesuniecie+$przesuniecie;
  3. ?>

chyba nie spełnia tego co powinna, bo podwaja przesuniecie, a powinna tylko dodac wysokosc linijki...

Moze byc naprawde mnostwo powodow, wiec najlepiej jakbys pokazal to co już napisałeś...
vereb
- rozmiar pliku PNG jest pobierany z bazy danych- dzieki temu okreslam ile linijek powinno znalezc sie w pliku

- ponizszy fragment kodu odpowiada za przesylanie zmiennych do skryptu proba.php gdzie generowany jest PNG oraz za wyswietlenie wyniku dzialania skryptu (ze wzgledu na czytelnosc podzielilem linijke na czesci)

  1. <?php
  2. [/size][/font][font="Arial"][size="2"]echo "</td><td><div><img src=proba.php?rozm_gumy=$rozm_gumy&linijka_1=$linijka_1&czcionka1=$czcionka1&Bold1=$Bold1&Italic1=$Italic1&rozmiar1=$rozmiar1&wyrownanie1=$wyrownanie1&linijka_2=$linijka_2&czcionka2=$czcionka2&Bold2=$Bold2&Italic2=$Italic2&rozmiar2=$rozmiar2&wyrownanie2=$wyrownanie2&linijka_3=$linijka_3&Bold3=$Bold3&Italic3=$Italic3&czcionka3=$czcionka3&rozmiar3=$rozmiar3&wyrownanie3=$wyrownanie3&linijka_4=$linijka_4&Bold4=$Bold4&Italic4=$Italic4&czcionka4=$czcionka4&rozmiar4=$rozmiar4&wyrownanie4=$wyrownanie4&linijka_5=$linijka_5&Bold5=$Bold5&Italic5=$Italic5&czcionka5=$czcionka5&rozmiar5=$rozmiar5&wyrownanie5=$wyrownanie5&linijka_6=$linijka_6&Bold6=$Bold6&Italic6=$Italic6&czcionka6=$czcionka6&rozmiar6=$rozmiar6&wyrownanie6=$wyrownanie6&linijka_7=$linijka_7&Bold7=$Bold7&Italic7=$Italic7&czcionka7=$czcionka7&rozmiar7=$rozmiar7&wyrownanie7=$wyrownanie7&przekaznik=$przekaznik&logo_image=$strUploadDir&skala_logo=$skala_logo&logo_polozenie=$logo_polozenie valign="top" width="300"></div>";
  3. ?>


- w skrypcie proba.php odwoluje sie do skryptu ktory dynamicznie zczytuje linijki

  1. <?php
  2. for ($tmp_ind=1; $tmp_ind<11; $tmp_ind++) {
  3.  $str = linijka_;
  4.  $str .= $tmp_ind;
  5.  $string[$tmp_ind] = $$str; 
  6.  
  7.  $string[$tmp_ind] = rawurldecode($string[$tmp_ind]);
  8.  $string[$tmp_ind] = iconv('ISO-8859-2', 'UTF-8', $string[$tmp_ind]); // polskie znaki
  9. }
  10. ?>


W sumie jesli chodzi o zmienne z trescia to raczej nigdzie indziej nie operuje na nich.


Jest ktos zdolny do pomocy? Czasu ucieka...

Nadal jestem w lesie więc podbijam temat na góre- może teraz ktoś kto umie php spróbuje pomoc...
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.