0

私が書いたcreateCaptcha関数でCaptchaセッションを作成しています。Webサービスでこの関数を呼び出してCaptchaセッションと画像を作成し、Captcha画像を送信するか、作成したCaptcha画像をWebサービスで表示して、ユーザーがWebサービスを介して値を送信できるようにしますが、エラーに直面しています。実際には、その画像へのリンクの代わりに、Firefox アドオン soap_client でテストしているときに、エンコードされた結果が得られます。

私が間違っている場所はありますか?

キャプチャ機能コード:

<?php
session_start();

function createcaptcha($imgname)
{
    /* Attempt to open */
    $im = @imagecreatefromjpeg($imgname);

    /* See if it failed */
    if(!$im)
    {
        /* Create a black image */
        $code=rand(1000,9999);
        $_SESSION["code"]=$code;
        $im = imagecreatetruecolor(50, 24);
        $bg = imagecolorallocate($im, 22, 86, 165);
        $fg = imagecolorallocate($im, 255, 255, 255);
        imagefill($im, 0, 0, $bg);
        /* Output an captcha code */
        imagestring($im, 5, 5, 5,  $code, $fg);
    }

    return $im;
}  

GetCaptcha 石鹸クラス:

session_start();
include_once('captcha.php');

class getCaptcha extends DBM
{
    public function getcaptcha()
    {
        //creating and generating captcha image and code
        $img = createcaptcha('captcha.png');


        //encoding to base64
        //$base64 = base64_encode($img);

        $path = $img;
        $type = pathinfo($path, PATHINFO_EXTENSION);
        $data = file_get_contents($path);
        $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

        $save = "/captchafile/captcha.png";
        imagepng($base64, $save);


        $captcha=$save;

        $this->strResult = "";


            $this->strResult.="<captcha>";
            $this->strResult.="<captcha>$captcha</captcha>";
            $this->strResult.="</captcha>";


    }


    function __toString()
    {
        if($this->strResult!=""){
            return $this->strResult;
        }
        return "";
    }


}
4

1 に答える 1

0

imagepng()画像を保存するには、関数に別のパラメーターを指定する必要があります。次に、Get_file_content()関数を使用して画像ファイルのコンテンツを取得し、それを base64 にエンコードして形式で送信する必要webserviceがありxmlます。

include_once('captcha.php');

class getCaptcha extends DBM
{
    public function getcaptcha($dump)
    {
        //creating and generating captcha image and code
        $img = createcaptcha("Captcha.png");

        imagepng($img,"Captcha.png");
        imagedestroy($img);

        $captchafile = file_get_contents('./Captcha.png');

        //encoding to base64
        $base64 = base64_encode($captchafile);


        $captcha=$base64;

        $this->strResult = "";


            $this->strResult.="<captcha>";
            $this->strResult.="<captcha>$captcha</captcha>";
            $this->strResult.="</captcha>";


    }


    function __toString()
    {
        if($this->strResult!=""){
            return $this->strResult;
        }
        return "";
    }


}
于 2015-06-22T06:36:55.563 に答える