Problem z generatorem obrazków


(northwest) #1

Witam,

Mam następujący skrypt:

<?php



   for ($x=0;$x
	$litera_klucza=substr(KLUCZ,$x%strlen(KLUCZ),1);

	$litera_szyfru=substr($szyfr,$x,1);

	$kod=$kod.($litera_klucza^$litera_szyfru);

    }


    $tlo=imagecolorallocate($grafika,0,0,0);

    $tekst=imagecolorallocate($grafika,0,0,0);

    imagestring($grafika,5,5,5,$kod,$tekst);

    Imagegif($grafika);

?>

Na serwerze z PHP4 ( http://www.pbla.pl/get_token.php?token=IOcnIDALVPNtVN==) efektem działania tego skryptu jest obrazek

z tekstem (tzw. token). Na lokalnym serwerze z PHP5 niestety nie działa on...

Możecie mi pomóc z tym??

Z góry dzieki za pomoc,

pozdrawiam North


(adpawl) #2

Pominę może dziwaczny nieco kod generujący token... :expressionless:

  1. header daj na sam początek skryptu!

  2. jak w header masz ustawiony typ na jpeg, to wywołuj fotkę również jako jpeg a nie jak w tym kodzie gif.

-czyli przy header

header ("Content-type: image/jpeg");

na końcu ma być

imagejpeg($grafika);

(northwest) #3

nooo i mam teraz taki kod:

<?php

    header ("Content-type: image/jpeg");

    define('KLUCZ','...');  


    $grafika=imagecreatefromgif('./tlo.gif');

    $token=str_rot13($_GET['token']);

    $token=base64_decode($token);

    $szyfr=substr($token,0,strpos($token," "));    


    for ($x=0;$x
	 $litera_klucza=substr(KLUCZ,$x%strlen(KLUCZ),1);

	 $litera_szyfru=substr($szyfr,$x,1);

	 $kod=$kod.($litera_klucza^$litera_szyfru);

    }           


    $tlo=imagecolorallocate($grafika,0,0,0);

    $tekst=imagecolorallocate($grafika,0,0,0);  

    imagestring($grafika,5,5,5,$kod,$tekst);

    imagejpeg($grafika);

?>

ale niestety dalej nie działa :((( efekt jest taki jak wcześniej :confused:


(adpawl) #4

Pisałem, masz strasznie pokopany fragment generatora tokena.

Zobacz efekt bez tego fragmentu:

<?php

header ("Content-type: image/jpeg");


define('KLUCZ','ania');


$grafika=imagecreatefromgif('./tlo.gif');

$kod=$_GET['token'];


$tlo=imagecolorallocate($grafika,0,0,0);

$tekst=imagecolorallocate($grafika,0,0,0);

imagestring($grafika,5,5,5,$kod,$tekst);


imagejpeg($grafika);

?>

(northwest) #5

zrobiłem tak jak kazałeś:

<?php

    //header ("Content-type: image/jpeg");

    //define('KLUCZ','ania');  

    //$grafika=imagecreatefromgif('./tlo.gif');


    $token=str_rot13($_GET['token']);

    $token=base64_decode($token);

    $szyfr=substr($token,0,strpos($token," "));    


   for ($x=0;$x
	 $litera_klucza=substr(KLUCZ,$x%strlen(KLUCZ),1);

	 $litera_szyfru=substr($szyfr,$x,1);

	 //$kod=$kod.($litera_klucza^$litera_szyfru);

    }           


    //$tlo=imagecolorallocate($grafika,0,0,0);

    //$tekst=imagecolorallocate($grafika,0,0,0);  

    //imagestring($grafika,5,5,5,$kod,$tekst);

    //imagejpeg($grafika);

?>

efektem tego jest pusty ekran.... tak miało być??

a jak wkleje to co podałeś u góry (ten kod) - to jest efekt taki jaki był wcześniej :confused:


(adpawl) #6

Bajki opowiadasz... -nic nie wpominałem o tych fragmentach które wyłaczyłeś.

Zwyczajnie wykomentowałeś potrzebne linijki, więc nie ma się co dziwić że nie działa. :stuck_out_tongue:

A kod który podałem wcześniej sprawdzałem u siebie i było ok.

Czy aby napewno masz w katalogu nadrzędnym plik tlo.gif ?

BTW

Kod obejmuj znacznikami

[/color]

(northwest) #7

Twój kod wkleiłem i też nie działa :confused:

zrobiłem tak:

<?php

$kod=$_GET['token'];

$tlo=imagecolorallocate($grafika,0,0,0);

$tekst=imagecolorallocate($grafika,0,0,0);

imagestring($grafika,5,5,5,$kod,$tekst);

imagejpeg($grafika);

?>

i w FireFoxie (Ubuntu 7.10+apache2+php5) mam takie coś na ekranie:

http://localhost/panoramaofert/get_toke ... xCVPNtVN==

mój url jaki wprowadzam: http://localhost/bla/get_token.php?toke ... xCVPNtVN==


(adpawl) #8
  1. prosiłem żebyś obejmował wklejany kod znacznikami [code]

  2. nie mamy dostępu do Twojego localhosta

  3. widzę, że gifa masz w tym samym katalogu co plik php ...więc nie powinienes się odwoływać do katalogu nadrzędnego.

Daj

<?php

header ("Content-type: image/jpeg");


$grafika=imagecreatefromgif('tlo.gif');

$kod=$_GET['token'];


$tlo=imagecolorallocate($grafika,0,0,0);

$tekst=imagecolorallocate($grafika,0,0,0);

imagestring($grafika,5,5,5,$kod,$tekst);


imagejpeg($grafika);

?>

powinno być ok.


(northwest) #9

W internecie ten kod działa okey (na php4), tylko czemu nie chce na lokalnym php 5 działać :confused:


(Airborn) #10

adpawl ja tam wcześniej widzę tylko taką wersję

i to przecież nie jest odwołanie do katalogu nadrzędnego, tylko do katalogu bieżącego


(northwest) #11

a masz php5?? może nie mam jakiejś biblioteki zainstalowanej?? :expressionless:


(Airborn) #12

te funkcje są z biblioteki gd, standardowo powinna ona być dostępna, gdyby nie była parser powinien wypluć błędy typu call to undefinied function , ale może coś z wersją jest nie tak, sprawdź efekt działania czegoś takiego

<?php

var_dump(gd_info());

?>

(adpawl) #13

Fakt, moje niedopatrzenie. Nadrzędny było by ../ a jest tylko jeden kropek :smiley:

-za dużo kawy i za mało snu ...znowu :-x

Tak czy owak, podany kod u mnie działał bez najmniejszego problemu ...zatem chyba jednak northwest ma konfig coś nie tego :wink:


(northwest) #14

mam taki error: Fatal error: Call to undefined function gd_info() in /var/www/bla/test.php on line 2


(Airborn) #15

no to wygląda na to, że jest jednak jakiś problem z biblioteką GD, możesz jeszcze sprawdzić czy

<?php

phpinfo(INFO_MODULES);

?>

wskaże takową bibliotekę


(northwest) #16

mam taki wynik: http://www.trif.superhost.pl/test.txt


(adpawl) #17

wygląda że nie masz GD włączonego

...wejdź w php.ini i odszukaj linijke:

;extension=php_gd2.dll

następnie zmień ją na:

extension=php_gd2.dll

potem zrestartuj serwer.


(northwest) #18

w linuxie nie mam plików dll:( i takiej linijki co podałeś też nie:/