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
Может ли это иметь какое-либо отношение к чему-то, кроме этого кода? Я уже установил правильные права на папку, чтобы он мог писать изображения в каталог.
Ответы
Ответ 1
<?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);
}
}
Убедитесь, что у вас есть:
- Создать папку captcha на root с разрешением 777
- В config.php
$config['base_url'] = 'http://localhost/yourproject/';
Ответ 2
Создайте папку вне приложения, называемую captcha Защитник Captcha Я думаю, вам также нужно иметь больше $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
контроллер
Обновление
Имя файла: 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'];
}
}
Пример изображения 1
![введите описание изображения здесь]()
Пример изображения 2
![введите описание изображения здесь]()
Ответ 3
Местоположение: ./приложение/контроллеры/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>