Jump to content
Sign in to follow this  
marcelobbt

Captcha com codeigniter

Recommended Posts

Estava tentando colocar o helper CAPTCHA num form mas está não estou sabendo jogar a imagem na view.

 

Abaixo o controller:

//insere CAPTCHA
$this->load->helper('captcha');
$vals = array(
        'word'          => 'Random word',
        'img_path'      => base_url().'/img/',
        'img_url'       => base_url().'/img/',
        'img_width'     => '150',
        'img_height'    => 30,
        'expiration'    => 7200,
        'word_length'   => 8,
        'font_size'     => 16,
        'img_id'        => 'Imageid',
        'pool'          => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',

        // White background and border, black text and red grid
        'colors'        => array(
                'background' => array(255, 255, 255),
                'border' => array(255, 255, 255),
                'text' => array(0, 0, 0),
                'grid' => array(255, 40, 40)
        )
);

$cap = create_captcha($vals);

Dai tentei jogar a variável $cap na view mas não aparece nada.

Como devo proceder?

Share this post


Link to post
Share on other sites

Finalmente consegui.

Segue solução abaixo para ajudar quem possa precisar.

//define random
		$random = substr(str_shuffle(str_repeat('abcdefghijklmnopqrstuvwxyz0123456789',5)),0,5);
		//lança valor num vetor
		$sessioncaptcha = array('captcha' => $random);
		//grava valor numa session
		$this->session->set_userdata ($sessioncaptcha);
		//carrega helper
		$this->load->helper('captcha');
		//define variáveis do captcha
		$vals = array(
	        'word'          => $random,
	        'img_path'      => './captcha/',
	        'img_url'       => base_url().'/captcha',
	        'font_path'     => './Estilo/fonts/Quicksand_Bold.otf',
	        'img_width'     => '130',
	        'img_height'    => 30,
	        'expiration'    => 3600,
	        'word_length'   => 8,
	        'font_size'     => 16,
	        'img_id'        => 'Imageid',
	        'pool'          => '0123456789abcdefghijklmnopqrstuvwxyz',
	        // White background and border, black text and red grid
	        'colors'        => array(
	                'background' => array(255, 255, 255),
	                'border' => array(255, 255, 255),
	                'text' => array(40, 40, 40),
	                'grid' => array(85, 145, 145)
	        )
		);
		//cria captcha
		$cap = create_captcha($vals);
		$captcha['image'] = $cap['image'];

Então na view basta colocar $captcha['image']

 

E quando retornar o valor do form, então confere com o valor na session

 

$capconfere = $this->session->userdata('captcha');

 

 

Bem é isso. Se precisarem de uma ajuda só perguntarem.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By buganti
      Olá!
       
      Estou me familiarizando com o codeigniter e desenvolvendo um site, a estrutura dele montei usando o conceito de uma página só, então eu tenho algumas section que ao clicar nos botões do menu a página vai até a section referenciada, porém, me surgiu uma questão, uma dessas section terá referências a outras páginas separadas, por exemplo, terei alguns cards com produtos, ao clicar em algum desses cards abrirá uma nova página com mais detalhes sobre esse produto, aí nessa página o meu será o mesmo, via template, só que ao clicar no botões ele busca as referências das section da página principal (única) e aí não funciona para voltar para lá, como eu deveria fazer essa referência de forma que funciona-se para ambas as situações?
       
      Não sei se fui clara na minha dúvida, se caso for necessário posso tentar me explicar melhor.
       
      Desde já agradeço.
    • By tncardoso
      Fala Pessoal... estou tendo algumas dificuldades num projeto pessoal que estou desenvolvendo com o PHP CodeIgniter.
      Estou tentando mudar o caminho da pagina inicial, para um template que eu baixei e configurei dentro deste projeto.

      Ao fazer isso.. me deparei com o seguinte erro...
      A PHP Error was encountered
      Severity: Notice
      Message: Undefined property: Home::$template
      Filename: controllers/Home.php
      Line Number: 9
      Backtrace:
      File: C:\xampp\htdocs\projects\thiago-cardoso\application\controllers\Home.php
      Line: 9
      Function: _error_handler
      File: C:\xampp\htdocs\projects\thiago-cardoso\index.php
      Line: 315
      Function: require_once
      An uncaught Exception was encountered
      Type: Error
      Message: Call to a member function show() on null
      Filename: C:\xampp\htdocs\projects\thiago-cardoso\application\controllers\Home.php
      Line Number: 9
      Backtrace:
      File: C:\xampp\htdocs\projects\thiago-cardoso\index.php
      Line: 315
      Function: require_once
       
      Em caso de Dúvida, segue aqui também um pouco do arquivo Home.php que estou trabalhando.
      <?php defined('BASEPATH') OR exit('No direct script access allowed');   class Home extends CI_Controller {          public function index()     {         // $this->load->view('home');         $this->template->show('home');     } }  
       
      Aguardo Resposta.
      Obrigado...
       
      Thiago Cardoso
    • By clovis.sardinha
      Pessoal,
      Estou fazendo um relatório no codeigniter, mas não consigo recuperar o retorno da model para a view.  Dou o foreach para utilizar um conjunto de id's que preciso achar em uma tabela, mas o array só recupera o último.
      Controller:
      $destinoterc=$this->triangulomodel->getDestinoterc($origemuser);         $dados['destinoterc']=$destinoterc;         foreach ($destinoterc as &$i){             $origemterc = $i['id'];             $origemtercfinal=$this->triangulomodel->getOrigemterc($origemterc);                                   }         $dados['origterc']= $origemtercfinal;        Model
      public function getOrigemterc($origemterc){ $query =$this->db->query("SELECT * FROM cadastro join tb_cidades on tb_cidades.cid_id=cadastro.cidade_origem where id =$origemterc"); foreach ($query->result_array() as $row) { } return $query->result_array(); }  
      Resultado , só está pegando o último ponteiro da array de origem. Teria que aparecer uns 30 registros.!
      [origterc] => Array ( [0] => Array ( [id_] => 21302 [cidade] => 3233 [cid_nome] => Januaria )  
    • By Cícero Antônio
      Pessoal, estou tento problemas ao recuperar dados de um form do método "post", em um site com certificado SSL. Localmente o site funciona perfeitamente, mas, quando subo pra o servidor os inputs retornam vazios. Trata-se de uma página de login.
       
      Neste projeto estou utilizando a versão 3 do Codeigniter. O site possui certificado SSL.
       
      (Obs.: estou ocultando aqui o nome do site porque estamos em fase de testes)
       
      No application/config.php:
      $config['base_url'] = 'https://www.meusite.com'; No .htaccess:
      RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ https://www.meusite.com/index.php/$1 [R,L] No views/login.php:
      <form action="<?php echo base_url('Login') ?>" method="post"> <input type="text" name="usuario" placeholder="Usuário"> <input type="password" name="senha" placeholder="Senha"> <input type="submit" value="Ok" > </form> No controllers:
      $vUsuario = $this->input->post('usuario'); $vSenha = $this->input->post('senha'); (Aqui, o input->post retorna vazio. Se eu mudar o method do formulário para get e utilizar o ->get() também funciona perfeitamente)
      Alguém já passou por isso? Alguma solução?
    • By Jonas_Britto
      Boa Tarde Pessoal... Preciso de uma ajuda, sou iniciante tenho estudado e pesquisado mas não tenho conseguido achar a solução... Quando vou imprimir o resultado do banco de dados mysql vem com aspas e colchetes.. Necessito retira-los.. Se alguem puder me ajudar agradeço desde de já..
       
      public function index()
          {
              if(!in_array('viewSocio', $this->permission)) {
                  redirect('dashboard', 'refresh');
              }
              $this->render_template('socios/index', $this->data);    
          }
          /*
          * It Fetches the products data from the product table
          * this function is called from the datatable ajax function
          */
          public function fetchSocioData()
          {   
              $result = array('data' => array());
              $data = $this->model_socios->getSocioData();
              
              
              foreach ($data as $key => $value) {
              // $dependentes_data = $this->model_dependentes->getDependentesData($value['dependente_id']);
                  // button
                  $buttons = '';
                  if(in_array('updateSocio', $this->permission)) {
                      $buttons .= '<a href="'.base_url('socios/update/'.$value['id']).'" class="btn btn-default"><i class="fa fa-pencil"></i></a>';
                  }
                  if(in_array('deleteSocio', $this->permission)) {
                      $buttons .= ' <button type="button" class="btn btn-default" onclick="removeFunc('.$value['id'].')" data-toggle="modal" data-target="#removeModal"><i class="fa fa-trash"></i></button>';
                  }
                  
                  $img = '<img src="'.base_url($value['image']).'" alt="'.$value['name'].'" class="img-circle" width="50" height="50" />';
                  $availability = ($value['availability'] == 1) ? '<span class="label label-success">Active</span>' : '<span class="label label-warning">Inactive</span>';
                  
                  $result['data'][$key] = array(
                      $img,
                      $value['n_titulo'],
                      $value['name'],
                      $value['cpf'],
                      $value['dependente_id'],
                      $availability,
                      $buttons
                  
                  );
              } // /foreach
              echo json_encode($result);
          }   

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.