Bir PHP işlevi çağırmadan

4 Cevap php

Ben bir metin parametresini tabanlı bir görüntü oluşturur ve kaydeder aşağıdaki işlevi var. Dosyamda ben bu nasıl arayabilirim? Denedim

INCLUDE 'outPrice.php';

, dış PHP bağlantı ve bu komutla adlandırılan

outPrice($text);

Ki ben şu yanıtı aldım için.

Warning: Cannot modify header information - headers already sent

Herhangi bir yardım mutluluk duyacağız.

function outPrice($textval){
	$textcolor = '666666';


	$font="bgtbt.ttf";
	$size = 20;
	$padding= 1;
	$bgcolor= "ffffff";

	$transparent = 0;
	$antialias = 0;

	$fontfile = $fontpath.$font;

	$box= imageftbbox( $size, 0, $fontfile, $textval, array());
	$boxwidth= $box[4];
	$boxheight= abs($box[3]) + abs($box[5]);
	$width= $boxwidth + ($padding*2) + 1;
	$height= $boxheight + ($padding) + 0;
	$textx= $padding;
	$texty= ($boxheight - abs($box[3])) + $padding;

	// create the image
	$png= imagecreate($width, $height);


	$color = str_replace("#","",$bgcolor);
	$red = hexdec(substr($bgcolor,0,2));
	$green = hexdec(substr($bgcolor,2,2));
	$blue = hexdec(substr($bgcolor,4,2));
	$bg = imagecolorallocate($png, $red, $green, $blue);

	$color = str_replace("#","",$textcolor);
	$red = hexdec(substr($textcolor,0,2));
	$green = hexdec(substr($textcolor,2,2));
	$blue = hexdec(substr($textcolor,4,2));
	$tx = imagecolorallocate($png, $red, $green, $blue);


	imagettftext( $png, $size, 0, $textx, $texty, $tx, $fontfile, $textval );

	header("content-type: image/jpeg");
	imagejpeg($png, "price".$textval.".jpg");
	imagedestroy($png);

}

4 Cevap

Nasıl bu dosyayı çağırıyoruz? Bir <img> etiketi, ya da bir CSS direktifi içinde nasıl arama yapıyorsanız, o zaman C. Walsh dediği gibi yapmak ve dosyada (uç içinde boşluk karakterleri için kontrol edin: ikili veri için bir kapatma dahil değildir {[(dosyanızın başında 2)]} ({[(3 gibi bir HEX editörü kullanın)]} sizin komut ?> etiketi) yanı sıra bunun için).

Ayrıca hataları resim, senaryonun yürütülmesi sırasında oluşabilecek beri ob_start() and ob_end_clean() , where ob_end_clean() sadece denir içinde komut dosyası içeriğini sarma, düşünebilirsiniz başlıkları gönderilir ve görüntü oluşturulur önce.

Eğer görüntüyü gömmek için istedikleri dosyasından doğrudan çağırarak, o aşağıdaki HTML düzeni kullanmak:

<img src="data:image/png;base64,DATADATADATA" alt ="" />

DATADATADATA Görüntünün base64 kodlu sürümü olduğu.

Bkz:

  1. Data URI Scheme
  2. PHP Manual Entry for base64_encode()

Eğer o yerde PHP dosyalarındaki bazı boşluk olabilir, bu olmuş gerektiğini düşünüyorum yoksa - mesaj sayfa zaten tarayıcıya bazı verileri gönderdi demektir. Bunu nereden geldiğini bulmak ve çıkarmak gerekir.

O çıkmak yoksa boşluk sonra this thread yardımcı olabilir.

Başlıklarını tüm http iletişimde ilk gönderilmesi gerekir, çünkü herhangi bir içerik tepki olarak gönderildikten sonra header () function (üçüncü son satırı) kullanarak, mümkün değildir. Php dosya <?php önce veya sonra boşluk yok emin olun ?>

Eğer alıyorsanız hata fonksiyonunun sonuna "başlık" diyoruz önce tarayıcısına gönderilen çıkış neden olur.

Şansını ilk ve son <?php ?> etiketleri dışında oturan bazı boşluk var vardır. Bu durumda, PHP automagically bir HTML belgesi çıktısı olduğunuzu belirten tarayıcıya başlıkları gönderir. Bu oldu sonra, artık başlıklarını değiştirebilir, ve PHP bir hata verir.

Çıkış nereden geldiğini izini; belgenin kaynağını inceleyen ve emin dahil dosyalarının hiçbir firar / baştaki boşlukları var yapmayı deneyin.