2015-10-05 137 views
0

我遇到了一個我無法弄清楚的小問題。 我的captcha希望不會出現。 我有默認圖像的圖像。如何在CodeIgniter中使用驗證碼?

我的控制器:

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圖像庫。 我的「驗證碼」文件夾是可寫的。

感謝您的幫助。

回答

0

你必須把驗證碼的圖像視圖頁面:

<label for="captcha"><img src="<?php echo base_url();?>uploads/captcha/<?php echo $captcha['image']';?>" width="160" height="40" /></label> 

在上面行給在那裏你上傳驗證碼圖片的適當的路徑。

1

加載這些庫的,以及(在__constructor

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

,並在控制器添加此太

// 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