1

私は他のいくつかの同様の質問を見てきましたが、残念ながらそれらのどれも私が抱えている問題を助けてくれませんでした。

これがスクリプトです。

 <?php
    // returns a PNG graph from the $_GET['per'] variable
    $per = imagecreate(302,7);
    $background = imagecolorallocate($per, 0xFF, 0xFF, 0xFF);
    $foreground = imagecolorallocate($per, 0x00, 0x8A, 0x01);
    $border = imagecolorallocate($per, 0x99, 0x99, 0x99);
    if ($_GET['per'] > 0)
    {
        $grad = imagecreatefrompng("images/grad.png");
        $per2 = imagecopy($per, $grad, 1, 1, 0, 0, ($_GET['per'] * 3), 5);
        imagerectangle($per, 0, 0, 301, 6, $border);
    }

    header("Content-type: image/png");
    imagepng($per,NULL,5);
?>

GDサポートがオンになっていることを確認したので、何が問題なのかわかりません。画像を使用せずに単純なバーだけを作成すると正常に機能しますが、画像を使用して作成しようとすると、壊れた画像の画像が表示されます。

4

1 に答える 1

1

それが存在することを確認する必要がありますper。そうでない場合、未定義のインデックスエラーがスローされます

if ($_GET['per'] > 0)

これである必要があります

if (isset($_GET['per']) && $_GET['per'] > 0)

または、空ではなく存在することを確認したい場合は、次のことができます。

if (!empty($_GET['per']) && $_GET['per'] > 0)

関数はempty()、変数が空かどうかをチェックする前に、変数が存在するかどうかもチェックするためです。

于 2012-11-07T00:18:47.023 に答える