2

codeigniter を使用してキャプチャ機能を実装しようとしています。しかし、キャプチャ画像は表示されません。

これが私のコードです:

//コントローラーファイル:captcha.php

<?php

class Captcha extends CI_Controller {
    var $controller = "captcha";   
    var $viewContent = array();

    public function __construct() {
        parent::__construct();
        $this->load->view('header');
    }

    /* Function To load captcha view file */

    function list_captcha() {

// キャプチャ ヘルパーをロードする

        $this->load->helper('captcha');
        $data = array(
            'img_path' => './captcha/',
            'img_url' => 'localhost/demoProject/application/captcha/',
            'img_width' => '150',
            'img_height' => 24,
            'border' => 0,
            'expiration' => 7200
        );
        $captchaArr = create_captcha($data);
        $this->viewContent['captchaArr'] = $captchaArr;
        $this->viewContent['captchaWord'] = $captchaArr['word'];
        //echo"<pre>"; print_r($captchaArr);exit;
        $this->viewContent['refreshUrl'] = "localhost/
        demoProject/" . $this->controller . "/list_" . $this->controller;
        $this->load->view($this->controller, $this->viewContent);
        $this->load->view('footer');
    }

}
?>

//ファイルを表示: captcha.php

<script>
    $(document).ready(function(){
        $("#captcha").blur(function(){
            if($("#captcha").val()== '<?php echo $captchaWord; ?>'){
                alert('Captcha match');
            }else{
                alert('Please enter same word like captcha image.');
            }
        });
    });
</script>
<table>
    <tr>
        <td>
            Captcha Image
        </td>
        <td style="text-align: center">
            &nbsp;&nbsp;<?php echo $captchaArr['image']; ?><br>
        </td>
    </tr>
    <tr>
        <td>Enter the same code here </td>
        <td style="text-align: center">&nbsp;&nbsp;
            <?php
            $data = array('name' => 'captcha', 'id' => 'captcha');
            echo form_input($data);
            ?>
        </td>
    </tr>
    <tr>
        <td>Can't read the image?</td>
        <td style="text-align: center">&nbsp;&nbsp;<a href="<?php echo $refreshUrl; ?>">Refresh</a></td>
    </tr>
</table>

このコードの何が問題なのかわかりません...

4

2 に答える 2

3

あなたの問題は次の行だと思います:

img_url' => 'localhost/demoProject/application/captcha/',

http://URL にプロトコル識別子がありません。

img_urlCAPTCHA ヘルパーによって変更されることはありません。<img>タグの作成に直接使用され、HTML 出力に直接ダンプされます。

ブラウザーが画像を読み込もうとすると、それが Web アドレスであることを認識しないため、読み込みに失敗します。

このコード行を変更して、そのhttp://部分を含める必要があります。さらに良いことに、CodeIgniter のbase_url()関数を使用して URL を生成し、コードが将来の変更に柔軟に対応できるようにする必要があります。

于 2013-01-15T08:35:37.067 に答える