Gå til innhold

Problemer med imagecreatefromjpeg


Anbefalte innlegg

Hei,

Jeg har problemer med en funksjon jeg utviklet for veldig lenge siden, funksjonen kalles en såkalt "antibot/spam bot".

Funksjonen fungerte på forrige server jeg hadde, men så måtte jeg bytte hosting leverandør og etter det så har ikke funksjonen fungert.

Problemet er at bildene ikke blir hentet eller laget, jeg ser virkelig ikke feilen.. kan jo for all del bare være en logisk feil. Har gjort om formatet til UTF-8 (uten BOM) for å se om det ga noen effekt, men ingenting skjedde.

Poster koden her, for å se om noen av dere kan hjelpe meg :)

<?php
	define('IS_AJAX', true);
	define('BASEPATH', true);
	require_once('../../../system/config.php');
	
	
	
	$imageHash = $db->EscapeString($_GET['hash']);
	$script = $db->EscapeString($_GET['script']);
	
	$sql = $db->Query("SELECT images_data FROM `antibot_sessions` WHERE `playerid`='".Player::Data('id')."' AND `script_name`='$script' AND `active`='1'");
	$ab  = $db->FetchArray($sql);
	
	
	// Lag array fra json bildedata-teksten
	
	$images_data = json_decode($ab['images_data'], true);
	$imageFile = false;
	
	foreach ($images_data['images'] as $image)
	{
		if ($image['hash'] == $imageHash)
		{
			$imageFile = $image['file'];
			break;
		}
	}
	
	if (!$imageFile)
	{
		header('Content-type: text/plain');
		die('Fant ikke bildet.');
	}
	else
	{
		header('Content-type: image/jpeg');
	}
	
	// Lag bildet
	
	
	$imageurl = 'images/' . $imageFile . $config['antibot_image_file_ext'];
	
	$img = imagecreatefromjpeg($imageurl);
	
	
	// Tegn linjer på bildet
	$num_lines = rand(6, 10);
	
	for ($i = 0; $i <= $num_lines; $i++)
	{
		$color = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));
	
		imageline($img, rand(5,95), rand(5,95), rand(5,95), rand(5,95), $color);
	}
	
	imagefilter($img, IMG_FILTER_COLORIZE, rand(1, 50), rand(1, 50), rand(1, 50));
	
	imagejpeg($img, '', 30);
	
	imagedestroy($img);
?>
Lenke til kommentar
Videoannonse
Annonse

Får du noen som helst slags feilmelding? Har du prøvd å aktivere feilrapportering? Har du prøvd noen form for debugging med f.eks. var_dump() ?

 

Min beste gjetning ut i fra informasjonen som er gitt så langt er at serveren er satt opp uten støtte for GD, slik at funksjoner som imagecreatefromjpeg() ikke fungerer. Burde være mulig å finne ut ved å kikke på phpinfo().

Lenke til kommentar

Får du noen som helst slags feilmelding? Har du prøvd å aktivere feilrapportering? Har du prøvd noen form for debugging med f.eks. var_dump() ?

 

Min beste gjetning ut i fra informasjonen som er gitt så langt er at serveren er satt opp uten støtte for GD, slik at funksjoner som imagecreatefromjpeg() ikke fungerer. Burde være mulig å finne ut ved å kikke på phpinfo().

Har prøvd debugging og prøvd med error_reporting uten form for tilbakemelding på feil i funksjonen, men ja jeg tror også det er pga server-konfigurasjonen at det er derfor det ikke fungerer slik det skal. Hvordan fikser jeg slik at serveren støtter imagecreatefromjpeg osv.. ?

 

Takk for raskt svar, forresten!

Lenke til kommentar

Hvordan du aktiverer støtte for GD kommer an på hva slags server det er snakk om. Om det bare er en enkel linux-boks som du har SSH-tilgang til så kan du bare kompilere php på nytt med --with-gd som parameter (i tillegg til alle parametrene som ble brukt sist).
Om du ikke har SSH-tilgang bør du antakelig høre med de som hoster serveren.

 

Anbefaler fortsatt å kikke på phpinfo() først, for å være sikker på at dette er problemet, det tar bare noen få sekunder, om GD er aktivt så vil det dukke opp der med "GD Support => enabled", det vil vises eventuell versjon og hvilke bildeformater som er støttet.

Lenke til kommentar

Hvordan du aktiverer støtte for GD kommer an på hva slags server det er snakk om. Om det bare er en enkel linux-boks som du har SSH-tilgang til så kan du bare kompilere php på nytt med --with-gd som parameter (i tillegg til alle parametrene som ble brukt sist).

Om du ikke har SSH-tilgang bør du antakelig høre med de som hoster serveren.

 

Anbefaler fortsatt å kikke på phpinfo() først, for å være sikker på at dette er problemet, det tar bare noen få sekunder, om GD er aktivt så vil det dukke opp der med "GD Support => enabled", det vil vises eventuell versjon og hvilke bildeformater som er støttet.

gd GD Support enabled GD Version bundled (2.1.0 compatible) FreeType Support enabled FreeType Linkage with freetype FreeType Version 2.3.11 GIF Read Support enabled GIF Create Support enabled JPEG Support enabled libJPEG Version 6b PNG Support enabled libPNG Version 1.2.49 WBMP Support enabled XPM Support enabled libXpm Version 30411 XBM Support enabled

 

GD er enabled, så det skal fungere. Om du er interessert i å hjelpe meg med å finne feilen, så kan du sende meg en PM så kan vi snakke sammen? :)

Lenke til kommentar

Om GD ikke er problemet så veit jeg ikke om jeg har stort mer hjelpsomt å komme med, utover å være helt sikker på at alle feilmeldinger er slått på (se gjerne ekstra info her).
Om du ikke får noe output og ingen feilmeldinger, så mangler du enten kode for å skrive ut (noe du ikke ser ut til å mangle her), eller så er ikke feilrapportering slått på skikkelig.

Lenke til kommentar

Om GD ikke er problemet så veit jeg ikke om jeg har stort mer hjelpsomt å komme med, utover å være helt sikker på at alle feilmeldinger er slått på (se gjerne ekstra info her).

Om du ikke får noe output og ingen feilmeldinger, så mangler du enten kode for å skrive ut (noe du ikke ser ut til å mangle her), eller så er ikke feilrapportering slått på skikkelig.

 

1: Banen var feil.
2. imagejpg kan jo selvfølgelig IKKE ta '' som parameter for bane. Må være NULL. logisk feil haha
3: Filen var lagret med byte order mark, slik at output startet før header()-kallet, slik at det ble ignorert og nettleseren dermed aldri fikk vite at den skulle tolke dataene som et bilde.

 

Funksjonen fungerer, og tråden er løst! Takk til Thorbear for raske og hjelpende svar, tommel opp til deg (Y)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...