-1

問題があります。PC の技術仕様を取得してオンラインに投稿するソフトウェアがあります。各仕様の署名画像を提供しています。これは php によって作成されていますが、もう機能していません。デモ リンク: http://checkmyspecs.co.uk/button.php?id=646725または任意の仕様ページに移動します。例: http://www.checkmyspecs.co.uk/display2.php?id=646725以下ページにはグラブボタンのコードがあります。

画像は button.php で作成する必要があります。コードは次のとおりです。

<?php

include "db.php"; 

function getdata($viewerid) { 
$query = "SELECT * FROM data where viewerid = '$viewerid'"; 

$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());
$data = array(); 
array_push($data,$row['bootmethod'],$row['ComputerCaption'],$row['Infrared'],$row['DayLight'],$row['ManufacturerBox'],$row['Model'],$row['cores'],$row['memory'],$row['monitor'],$row['resolution'],$row['pixels'],$row['cpuvoltage'],$row['clockspeed'],$row['AddressWidth'],$row['SocketDesignation'],$row['cpuname'],$row['loadpercent'],$row['applications'],$row['videocardname'],$row['refreshrate'],$row['videodriver'],$row['installed'],$row['hddata'],$row['directx']); 
return $data; 
} 


function LoadPNG($imgname,$cur)
{

$getvalues = getdata($cur);

/* Attempt to open */
$im = @imagecreatefrompng($imgname);
// Removes white background (made from the original transparency)
$white = imagecolorallocate($im, 255, 255, 255);
// Make the background transparent

//Generate the text to write onto the image (the php Version).
//Don't know much about this


// Add some shadow to the text

$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
$blue = imagecolorallocate($im, 0, 173, 238);
$darkblue = imagecolorallocate($im, 54, 154, 191);



$font = '/fonts/arialbd.ttf';

$ramo = $getvalues[7];
$cpuo = $getvalues[15];
$gpuo = $getvalues[18];
$screeno = $getvalues[9];

$ram = "$ramo MB"; 
$cpu = "$cpuo"; 
$gpu = "$gpuo "; 
$screen = "$screeno"; 

imagettftext($im, 11, 0, 40, 23, $black, $font, $cpu);
imagettftext($im, 11, 0, 40, 53, $black, $font, $gpu);
imagettftext($im, 11, 0, 40, 83, $black, $font, $screen);
imagettftext($im, 11, 0, 40, 113, $black, $font, $ram);


// write text
$textcolor = imagecolorallocate($im, 0, 3, 0);
return $im;
}
header('Content-Type: image/png');
$button = '/images/button.png'; 
$img = LoadPNG($button,$_GET['id']);
imagepng($img); 


?> 
4

1 に答える 1

2

あなたのイメージはイメージではありません。実際に出力されているのは次のとおりです。


警告: imagecolorallocate(): 指定された引数は、24行目の/home/checkmys/public_html/button.phpの有効な画像リソースではありません警告: imagecolorallocate(): 指定された引数は、 /home/checkmys/public_html/の有効な画像リソースではありません33行目のbutton.php警告: imagecolorallocate(): 指定された引数は/home/checkmys/public_html/button.phpの有効な画像リソースではありません34行目の警告: imagecolorallocate(): 指定された引数は/の有効な画像リソースではありませんhome/checkmys/public_html/button.php35警告







: imagecolorallocate(): 指定された引数は、36行目の/home/checkmys/public_html/button.phpの有効な画像リソースではありません警告: imagecolorallocate(): 指定された引数は、/home/checkmys/public_html/buttonの有効な画像リソースではありません37行目の.php致命的なエラー: 53行目の/home/checkmys/public_html/button.phpの未定義関数 imagettftext() の呼び出し




content-type が画像として設定されている場合でも、Fiddlerなどのツールを使用してこれを確認できます。その@シンボルを削除すると、イメージを作成できなかった理由を説明するエラーが表示される可能性があります。

また、現在、SQL インジェクションに対して広くオープンです。この問題を回避するには、PDO で準備されたクエリを使用する必要があります。

于 2012-06-16T14:50:52.133 に答える