2016-09-12 39 views
10

Napisałem mały fragment kodu, który powinien działać dla captcha w Codeigniter. Kod powinien po prostu wydrukować czas utworzenia captcha, po raz pierwszy. Ale wydaje się, że nawet nie tworzy on samego captcha. Jestem pewien, że pomocnik jest załadowany, odbywa się to w funkcji konstruowania. Oprócz tego powinny tam być poprawne prawa do zapisu obrazu do folderu. Czy ktoś ma pojęcie, dlaczego nie działa tak jak powinien?Captcha nie działa w CI

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 Czy to ma coś wspólnego z czymś Oprócz tego kodu? Już ustawiłem odpowiednie prawa do folderu, aby mógł on zapisywać obrazy w katalogu.

+0

linie komentarza ECHO i odprawy czy obraz stworzył – Lasith

+0

@Lasith Nope zrobił nie. –

+0

Czy ustawiłeś swój bazowy adres URL? – user4419336

Odpowiedz

0
<?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); 
    } 
} 

Upewnij się, że:

  1. Utwórz folder captcha na korzeń z pozwoleniem 777
  2. W config.php $config['base_url'] = 'http://localhost/yourproject/';
+0

Miałem drugi, ale pierwszy wydaje się naprawić problem. Dzięki wielkie! Ustawiłem prawa na 666, które według mnie powinny nad tym pracować. Wygląda na to, że nie. –

2

Utwórz folder poza aplikacji o nazwie captcha Captcha Helper myślę, że trzeba też mieć więcej $ Vals w również tam nie tylko img_path i img_url

Również upewnić folderu chmod 0777 uprawnienia lub 0700

może trzeba skonfigurować niektóre trasy także

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

Nazwa pliku: register.php

application 

assets > images > captcha // Has the correct permissions 

assets > images > captcha > fonts // Has the correct permissions 

system 

index.php 

Controller

Updated

Nazwa pliku: register.php po file and class style guide

Określ bazowy 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' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 
     ); 

     $cap = create_captcha($vals); 
     echo $cap['image']; 

    } 

} 

Obraz przykładu 1

enter image description here

Obraz Przykład 2

enter image description here

+0

Czy te czcionki są wymagane do captcha? Ponieważ myślałem, że czytam, że nie są. –

+0

Myślę, że możesz zmienić czcionki, które chcesz umieścić, umieszczając je w folderze czcionek. – user4419336

+0

Przykro mi, ale nadal nie działa dla mnie. Nie pokazuje żadnego obrazu ani żadnego innego. –

0

Lokalizacja: ./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); 
     } 
    } 
} 

Lokalizacja. */application/views /captcha-view.php /

Dodaj Captcha!

<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(); ?> 

Lokalizacja: ./application/views/success-view.php

<html> 

<head> 
    <title>Success!</title> 
</head> 

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

</html>