Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: niezrozumiałe zachowanie php
Forum PHP.pl > Forum > PHP
rbart
Pisząc skrypt natknołem sie na pewien błąd o którym niemam pojęcia co go wywołuje (sprawdzałem już chyba wszystko).

Zamieszczam więc bardzo okrojony kod przy którym błąd się pojawia:
  1. <?php
  2. function create_img($kod){
  3. $img = imagecreatetruecolor(200, 50);
  4. $arr= str_split((string)$kod);
  5.  
  6. for($i=0; $i<5; $i++){
  7. imagefttext($img, '30', '0', (5+$i*26), '40', hexdec('FFFFFF'), 'Arial', $arr[$i]);
  8. }
  9.  
  10. header('Content-type: image/png');
  11. echo imagepng($img);
  12.  
  13.  
  14. echo '
  15.  
  16. kod = '.$kod.'
  17. arr = '.$arr['0'].$arr['1'].$arr['2'].$arr['3'].$arr['4'];
  18. }
  19. create_img(rand(10000,99999));
  20. ?>
Kod pisałem pod php5 ale w php4 też powinien działać.
Skrypt coprawda generuje obrazek ale nie mam pojęcia skąd bierze te liczby.

Wystarczy zajrzeć do źródła(na samym dole) aby zobaczyć co powinien wyświetlić.
Wiem że to ostatnie echo to nie najlepszy pomysł na wyświetlanie zmiennych ale jakoś musiałem to zrobić a ten był najprostszy.

Edit: zpomniałem skrypt wymaga biblioteki gd ja mam w wersji 2


OFFTOPIC:
pisząc pierwszą linijke zakonczylem ją średnikem :)
oczywiśćie poprawiłem
em1X
mi to wygląda na jakiś bug smile.gif naprawde niezły lol tongue.gif
rbart
Też tak pomyślałem bo php mi jeszcze nigdy takich cudów nie robiło
Ale szczerze mówiąc bardziej niż na odkryciu bug'u zależy mi aby to działało i
wole aby to był mój błąd ale żeby działało :(
em1X
A czemu upierasz sie na ImageFTtext ? Zagladalem wlasnie do bugs.php.net i juz byl jakis problem z ta funkcja.. mysle, ze warto byloby to zglosic..
rbart
Upierać to ja się nie upieram ale uznałem to za najprostsze.
sugerujesz może coś w zamian ?

Co do zgłoszenia tego poczekam jescze trochę jeżeli do północy nikt nie znajdzie luki u mnie to zgłosze problem.

moja wersja php to 5.0.2

Funkcja faktycznie miała sporo błędów,


OFFTOPIC
ostatnio aż mie korci aby nauczyć się C i zacząć pisać własne biblioteki,
Kuziu
To chyba jednak jakiś BUG do czasu jak sie nie uzyje RAND wszystko działa.


Wstawilem nawet dane do pliku zeby mieć pewność że nie jest ponownie wywoływana funkcja rand() ale jak widać nawet jak czyta z pliku to czyta głupoty.

  1. <?php
  2. file_put_contents('data.txt', rand(1,9));
  3. $img = imagecreatetruecolor(200, 50);
  4.  
  5. $mem = file_get_contents('data.txt');
  6. imagefttext($img, '30', '0', (5+$i*26), '40', hexdec('FFFFFF'), 'Arial', $mem);
  7.  
  8. header('Content-type: image/png');
  9. echo imagepng($img);
  10.  
  11. echo('
  12. MEM = ' . $mem);
  13. ?>
em1X
ja uzywałem ImageTTFText" title="Zobacz w manualu php" target="_manual snitch.gif
rbart
ImageTTFText ma ten sam problem który opisałem a błąd już zgłosiłem wspominając o obu funkcjach
rbart
Błąd coprawda zgłosiłem ale otrzmałem odpowiedź że wina leży po mojej stronie a raport ma status 'Bogus' cokolwiek to znaczy.

Dołączam równierz korespondencję z grupy pl.comp.lang.php link?

Mam jeszcze małą prośbę czy mogłby ktoś wkleić kody swoich skyptów(o podonym pzeznaczeniu) tą część kóra generuje obrazek(może być nawet okrjona).
bendi
Szczerze mówiąc niebardzo wiem o co chodzi, właśnie wkleiłem sobie skrypt podany przez rabata w pierwszym poście i wszystko ślicznie śmiga - obrazek się generuje, rand zwraca liczbę z podanego zakresu która następnie jest rozdzielana na czynniki pierwsze (tylko chyba sam autor wie po co) i dodawana do obrazka. Jak tam zaszyję liczbę na sztywno to też działa.

KUbuntu
Apache2
php 5.1.2

Jedna uwaga co do kodu:
Zamiast
  1. <?php 
  2. $arr= str_split((string)$kod);
  3.  
  4. echo $arr[1];
  5. ?>


Wystarczy:
  1. <?php 
  2. $arr= (string)$kod;
  3.  
  4. echo $arr[1];
  5. ?>


Cytat(rbart @ 2.06.2006, 17:29 ) *
ostatnio aż mie korci aby nauczyć się C i zacząć pisać własne biblioteki,

Jak masz się ucz, napewno Ci to nie zaszkodzi tongue.gif
rbart
Cytat
Szczerze mówiąc niebardzo wiem o co chodzi, właśnie wkleiłem sobie skrypt podany przez rabata w pierwszym poście i wszystko ślicznie śmiga
Jesteś pierwszą osobą która to stwierdza umnie kod na obrazku jest różny od kodu w źódle

Cytat
rand zwraca liczbę z podanego zakresu która następnie jest rozdzielana na czynniki pierwsze (tylko chyba sam autor wie po co) i dodawana do obrazka.

z pierwszego posta rozpoczynającego temat
Cytat
Skrypt coprawda generuje obrazek ale nie mam pojęcia skąd bierze te liczby.
Wystarczy zajrzeć do źródła(na samym dole) aby zobaczyć co powinien wyświetlić.
a pozatym jak wspomniałem kod jest bardzo okrojony pierwotnie każdej cyfrze był losowo przydzielany rozmiar, położenie(w pewnym zakesie aby zachować kolejność), typ czcionki oraz pochylenie i do tego używalem pętli.

Dziękuje za dodany kod oczywiście wiem że to rozwiązuje problem ale ja mam już kilka gotowych obejść tego poblemu a zależy mi jedynie na tym żeby wykyć błąd

Offtopic:
Przepraszam wszystkich że tak pisze na raty ale mam teraz naprawdę dużo o wiele ważniejszych spraw
.radex
nie czytałem dokładnie tematu ale czy nie chdodzi o tą linijke:
kod = '.$kod.'
czy nie powinno byc
$kod = '.$kod.';
questionmark.gif
em1X
radex błysnąłeś inteligencją jak spłuczka w... biggrin.gif jakbyś zauważył to linijkę wyżej zaczęło się echo.

do reszty: ten kod działa, z tym, że funkcja przyjmuje jako parametr pewną liczbę, a wypisuje zupełnie inną.
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.