Captcha не работает в CI

Я написал небольшой фрагмент кода, который должен работать для captcha в Codeigniter. Код должен просто просто распечатать время, которое был создан captcha, для первой попытки. Но он, похоже, даже не создает сам капчу. Я уверен, что помощник загружен, это делается в функции построения. Рядом с этим должны быть правильные права на запись изображения в папку. Кто-нибудь знает, почему он не работает так, как должен?

defined('BASEPATH') OR exit('No direct script access allowed'); class Register extends CI_Controller{ public function __construct(){ parent::__construct(); $this->load->helper('captcha'); } public function generate_captcha(){ $vals = array( 'img_path' => './captcha/', 'img_url' => base_url().'captcha/', ); echo base_url().'assets/images/captcha/'; $captcha = create_captcha($vals); echo 'cap time: ' . $captcha['time']; $captcha_image = $captcha['image']; return $captcha_image; } } 

Edit Может ли это иметь какое-либо отношение к чему-то, кроме этого кода? Я уже установил правильные права на папку, чтобы он мог писать изображения в каталог.

 <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Mycaptcha extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('captcha'); $this->load->helper('url'); } public function index() { $vals = array( 'img_path' => './captcha/', 'img_url' => base_url().'/captcha/', ); $captcha = create_captcha($vals); $captcha_image = $captcha['image']; print_r($captcha); } } , <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Mycaptcha extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('captcha'); $this->load->helper('url'); } public function index() { $vals = array( 'img_path' => './captcha/', 'img_url' => base_url().'/captcha/', ); $captcha = create_captcha($vals); $captcha_image = $captcha['image']; print_r($captcha); } } , <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Mycaptcha extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('captcha'); $this->load->helper('url'); } public function index() { $vals = array( 'img_path' => './captcha/', 'img_url' => base_url().'/captcha/', ); $captcha = create_captcha($vals); $captcha_image = $captcha['image']; print_r($captcha); } } 

Убедитесь, что у вас есть:

  1. Создать папку captcha для root с разрешением 777
  2. В config.php $config['base_url'] = 'http://localhost/yourproject/';

Создайте папку вне приложения под названием captcha Captcha Helper. Думаю, вам также нужно иметь больше $ vals, а не только img_path и img_url

Также убедитесь, что права доступа к файлам chmod 0777 или 0700

Возможно, вам придется настроить некоторые маршруты

 $route['register/generate_captcha'] = 'register/generate_captcha'; 

Имя файла: Register.php

 application assets > images > captcha // Has the correct permissions assets > images > captcha > fonts // Has the correct permissions system index.php 

контроллер

обновленный

Filename: Register.php, следуя руководству по стилю файла и класса

Задайте свой базовый url: $config['base_url'] = 'http://localhost/yourproject/';

 <?php class Register extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('captcha'); } public function index(){ $vals = array( 'word' => 'Random word', 'img_path' => './assets/images/captcha/', 'img_url' => base_url('assets/images/captcha'), 'font_path' => './assets/images/captcha/fonts/texb.ttf', 'img_width' => '150', 'img_height' => 30, 'expiration' => 7200, 'word_length' => 8, 'font_size' => 16, 'img_id' => 'Imageid', 'pool' => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ); $cap = create_captcha($vals); echo $cap['image']; } } , <?php class Register extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('captcha'); } public function index(){ $vals = array( 'word' => 'Random word', 'img_path' => './assets/images/captcha/', 'img_url' => base_url('assets/images/captcha'), 'font_path' => './assets/images/captcha/fonts/texb.ttf', 'img_width' => '150', 'img_height' => 30, 'expiration' => 7200, 'word_length' => 8, 'font_size' => 16, 'img_id' => 'Imageid', 'pool' => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ); $cap = create_captcha($vals); echo $cap['image']; } } 

Пример изображения 1

введите описание изображения здесь

Пример изображения 2

введите описание изображения здесь

Расположение: ./application/controllers/Captcha.php

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Captcha extends CI_Controller { public function __construct(){ parent::__construct(); $this->load->library('form_validation'); $this->load->driver("session"); $this->load->helper(array('form', 'url', 'captcha')); } public function index() { $this->form_validation->set_rules('name', "Name", 'required'); $this->form_validation->set_rules('captcha', "Captcha", 'required'); $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'); $name = set_value('name'); $data = array('name' => $name); $this->load->view('success-view', $data); } else { $vals = array('img_path' => 'static/','img_url' => base_url().'static/'); $captcha = create_captcha($vals); $this->session->set_userdata('captchaWord', $captcha['word']); $this->load->view('captcha-view', $captcha); } } } 

Расположение: *. / Application / views / captcha-view.php /

Добавить Защитный код!

 <h1>Adding a captcha</h1> <p>Take a look at <code style="background:rgb(220,220,220);">application/controllers/Captcha.php</code> to look at the controller used to generate the captcha.</p> <?php echo validation_errors(); ?> <?php echo form_open( 'captcha'); ?> </p> <p> <label for="name">Name:</label> <input id="name" name="name" type="text" /> </p> <?php echo $image; ?> <p> <label for="name">Captcha:</label> <input id="captcha" name="captcha" type="text" /> </p> <?php echo form_submit( "submit", "Submit"); ?> <?php echo form_close(); ?> 

Местоположение: ./application/views/success-view.php

 <html> <head> <title>Success!</title> </head> <body> <h1>Success!</h1> <p>Thanks, <?php echo $name; ?>!</p> </body> </html>