Я написал небольшой фрагмент кода, который должен работать для 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); } }
Убедитесь, что у вас есть:
$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>