【问题标题】:Captcha using codeigniter is not working使用 codeigniter 的验证码不起作用
【发布时间】:2012-12-29 06:59:15
【问题描述】:

我正在尝试使用 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>

我没有明白这段代码有什么问题...

【问题讨论】:

    标签: php codeigniter captcha


    【解决方案1】:

    您可以像下面这样制作验证码。

    $values = array(
                'word' => '',   //Generate alternate word by default. You can also set your word.
                'word_length' => 6,  // To set length of captcha word.
                'img_path' => './images/',   // Create  folder "images" in root directory, and give path.
                'img_url' => base_url() .'images/',  // To store captcha images in "images" folder.
                'font_path' => FCPATH.'system/fonts/texb.ttf',
                'img_width' => '250',   //Set image width.
                'img_height' => 50,   // Set image height.
                );
    
            // "create_captcha" is function of "captcha helper", this will set array in helper library.
            $captcha = create_captcha($values); 
    

    注意:- font_path 应该包含绝对路径。

    【讨论】:

      【解决方案2】:

      我相信你的问题是这一行:

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

      您的网址缺少http:// 协议标识符。

      img_url 永远不会被 CAPTCHA 助手修改 - 它直接用于创建 &lt;img&gt; 标记,该标记直接转储到您的 HTML 输出中。

      当浏览器尝试加载图片时,它并没有意识到这是一个网址,所以加载失败。

      您应该修改这行代码以包含http:// 部分。更好的是,您应该使用 CodeIgniter 的 base_url() 函数生成 URL,以便您的代码可以灵活地适应未来的变化。

      【讨论】:

        猜你喜欢
        • 2016-09-18
        • 1970-01-01
        • 2014-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-28
        • 2012-07-14
        • 2013-12-01
        相关资源
        最近更新 更多