如何在CodeIgniter中使用验证码?

时间:2015-10-05 10:55:52

标签: php codeigniter captcha

我遇到了一个我无法弄清楚的小问题。 我的验证码想要没有出现。 我有默认图像的图像。

我的控制器:

 class Captcha extends CI_Controller {

  public function index() {
    // loading captcha helper
    $this->load->helper('captcha');
    //validating form fields
    $this->form_validation->set_rules('userCaptcha', 'Captcha', 'required|callback_check_captcha');
    $userCaptcha = $this->input->post('userCaptcha');
    if ($this->form_validation->run() == false){
      // numeric random number for captcha
      $random_number = substr(number_format(time() * rand(),0,'',''),0,6);
      // setting up captcha config
      $vals = array(
             'word' => $random_number,
             'img_path' => './captcha/',
             'img_url' => base_url().'captcha/',
             'font_path' => './path/to/fonts/texb.ttf',
             'img_width' => 140,
             'img_height' => 32,
             'expiration' => 7200
            );
      $data['captcha'] = create_captcha($vals);
      $this->session->set_userdata('captchaWord',$data['captcha']['word']);
      $this->load->view('captcha', $data);
    }
}

我的观点:

<html>
    <head>
        <title>Adding a Captcha!</title>
    </head>
    <body>
        <h1>Captcha Example</h1>
        <?php echo form_open('captcha'); ?>
        <div class="formSignIn" >
            <div class="form-group">
                 <input autocomplete="off" type="text" id="username" name="username" placeholder="User Email" value="<?php if(!empty($username)){ echo $username;} ?>" />
                  <span class="required-server"><?php echo form_error('username','<p style="color:#F83A18">','</p>'); ?></span> 
            </div>
            <div class="form-group">
                   <input autocomplete="off" type="password" id="user_password" name="user_password" placeholder="User Password" value="" />
                   <span class="required-server"><?php echo form_error('user_password','<p style="color:#F83A18">','</p>'); ?></span>           
           </div>
          <div class="form-group">
                <label for="captcha"><?php echo $captcha['image']; ?></label>
                <br>
                 <input type="text" autocomplete="off" name="userCaptcha" placeholder="Enter above text" value="<?php if(!empty($userCaptcha)){ echo $userCaptcha;} ?>" />
                <span class="required-server"><?php echo form_error('userCaptcha','<p style="color:#F83A18">','</p>'); ?></span> 
           </div>
          <div class="form-group">
               <input type="submit" class="btn btn-success" value="Sign In" name="" />
        </div>
     </div>
     <?php echo form_close(); ?>
</body>
</html>

我把GD图像库。 我的“验证码”文件夹是可写的。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

同样加载这些库(在__constructor

$this->load->library('form_validation');
$this->load->driver("session");
$this->load->helper(array('form', 'url', 'captcha'));

并在Controller中添加此

  // setting up captcha config
  $vals = array(
         'word' => $random_number,
         'img_path' => './captcha/',
         'img_url' => base_url().'captcha/',
         'img_width' => 140,
         'img_height' => 32,
         'expiration' => 7200
        );
  $data['captcha'] = create_captcha($vals);

表格

<?php echo form_open('captcha'); ?>
<div class="formSignIn" >
  <div class="form-group">
    <input autocomplete="off" type="text" id="username" name="username" placeholder="User Email" value="<?php if(!empty($username)){ echo $username;} ?>" />
    <span class="required-server"><?php echo form_error('username','<p style="color:#F83A18">','</p>'); ?></span> </div>
  <div class="form-group">
    <input autocomplete="off" type="password" id="user_password" name="user_password" placeholder="User Password" value="" />
    <span class="required-server"><?php echo form_error('user_password','<p style="color:#F83A18">','</p>'); ?></span> </div>
  <div class="form-group">
    <label for="captcha"><?php echo $captcha['image']; ?></label>
    <br>
    <input type="text" autocomplete="off" name="userCaptcha" placeholder="Enter above text" value="<?php if(!empty($userCaptcha)){ echo $userCaptcha;} ?>" />
    <span class="required-server"><?php echo form_error('userCaptcha','<p style="color:#F83A18">','</p>'); ?></span> </div>
  <div class="form-group">
    <input type="submit" class="btn btn-success" value="Sign In" name="" />
  </div>
</div>
<?php echo form_close(); ?>

所以看起来像

01

Refer this link too

答案 1 :(得分:0)

您必须在您的视图页面中放置验证码的图像:

 mvn clean package/install 

在上面的行中,给出上传的验证码图像的适当路径。