【问题标题】:my codeigniter captcha not generating image我的 codeigniter 验证码没有生成图像
【发布时间】:2014-04-30 15:23:34
【问题描述】:

我的 CodeIgniter 验证码没有生成,所以我无法在我的视图中显示它

控制器

public function login() {
    $this->load->helper('captcha');
    $this->form_validation->set_rules($this->login_rules);
    $userCaptcha = set_value('captcha');
    $word = $this->session->userdata('captchaWord');

    if($this->form_validation->run() == TRUE && strcmp(strtoupper($userCaptcha),strtoupper($word)) == 0) {
        $this->session->unset_userdata('captchaWord');
        $username = $this->input->post('username');
        $password = $this->input->post('password');

        if(!$this->autentifikasi->login($username,$password)) {
            $this->session->set_flashdata('pesan', '<div class="error">Login gagal</div>');
            redirect(site_url('user/login'));
        } else {
            $this->session->set_flashdata('pesan', '<div class="sukses">Anda telah berhasil login, selamat berbelanja.</div>');
            redirect(site_url('user/login'));
        }
    }

    $original_string = array_merge(range(0,9), range('a','z'), range('A', 'Z'));
    $original_string = implode("", $original_string);
    $captcha = substr(str_shuffle($original_string), 0, 6);

    $vals = array(
        'word' => $captcha,
        'img_path' => './captcha/',
        'img_url' => base_url().'user/login/',
        'font_path' => './fonts/texb.ttf',
        'img_width' => '150',
        'img_height' => 30,
        'expiration' => 3600
    );

    $cap = create_captcha($vals);

    $data['image']= $cap['image'];
    $this->session->set_userdata('captchaWord', $captcha);

    $this->template->set_judul('PT. Columbindo Perdana')
        ->set_css('style')
        ->set_parsial('sidebar','sidebar_view',$this->data)
        ->set_parsial('topmenu','top_view',$this->data)
        ->render('user_login',$this->data); 
}

查看

    <?php if($this->session->flashdata('pesan')): ?>
    <?php echo $this->session->flashdata('pesan'); ?>
<?php else:?>
    <h2>Silakan Login</h2>
    <?php if(@$error){echo @$error;} ?>
    <?php echo validation_errors(); ?>
    <br />
    <?php echo form_open(site_url(uri_string()),'class="order"'); ?>
    <?php echo form_label('Username'); ?>
    <?php echo form_input('username'); ?>
    <?php echo form_label('Password'); ?>
    <?php echo form_password('password'); ?>
    <?php echo form_label('Captcha'); ?>
    <?php echo $image; ?>
    <?php echo form_input('captcha'); ?>
    <?php echo form_submit('submit','Login'); ?>
    <?php echo form_close(); ?>
    <br />
    Anda belum memiliki akun? Silakan daftar <a href="<?php echo site_url('user/register') ;?>">disini</a>.
<?php endif ?>

据我所知,我没有验证码文件夹或字体文件夹,如果没有这两个文件夹,它是否仍会自行生成?我已经尝试了一些已解决的问题,但它仍然无法正常工作。没有错误,但验证码图像不显示。

请帮帮我。

【问题讨论】:

  • 不,您需要先创建一个验证码文件夹才能使用验证码
  • 哦,所以我必须首先创建一个空文件夹?不是里面已经有验证码图片的文件夹?

标签: php codeigniter captcha


【解决方案1】:

问题是您将$this-&gt;data 传递给您的视图,但您将生成的图像分配给$data。所以你需要把它从

$data['image']= $cap['image'];

$this->data['image']= $cap['image'];

如果这不起作用,请确保您将图像保存到 ('img_path' =&gt; './captcha/') 的验证码目录是可写的,666 或 777。您可以在命令行上执行 chmod 777 captcha/。还要确保在您的php.ini 中启用了 GD 图像库扩展

【讨论】:

  • 如何将其编辑为 666 或 777?以及如何启用GD图像先生?
  • 是的先生,我已经用我自己的方式让它工作了我认为..当我生成它时,我 print_r($cap) 它出现 [word]=>asdasd [time]=> 1396421917.5709 [ image] => '' 图像数组为空/null。但是在我创建的验证码文件夹中,出现了一个名为 1396421917.5709.jpg 的图像,我只是更改视图以使用 data->time'.jpg'> 调用它哈哈哈..我知道这是错误的方式,但它的工作,所以我认为它是好的 :) 非常感谢先生。谢谢你花时间回答我的问题。最好的问候
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 2014-06-19
相关资源
最近更新 更多