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 adomingo10
      Pessoal
      Sou iniciante e estou com dúvida no erro de variável indefinida, a conexão do BD funciona, em outra página do projeto os dados são listados corretamente. Nesse código abaixo, já testei de tudo e aparecem dois códigos de erro. 
      O objetivo desse código é listar dentro do html os dados da tabela do BD, exemplo:  vou deixar fixo um registro da categoria no topo da página. 
       
      Código: <!-- CONTROLLER --> <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Buscar extends CI_Controller { public $data = array(); public function __construct(){ parent::__construct(); $this->load->model('menus_model'); $this->data['base_url'] = base_url(); $this->data['menus'] = $this->menus_model->getMenus(); $this->data['menu_ativo'] = ''; $this->data['header'] = $this->load->view('frontend/includes/header.php', $this->data, true); $this->data['navigation'] = $this->load->view('frontend/includes/navigation.php', $this->data, true); $this->data['footer'] = $this->load->view('frontend/includes/footer.php', $this->data, true); } public function index() { //page title $this->data['title'] = 'Buscar'; //template buscar $this->data['body'] = $this->load->view('frontend/pages/buscar.php', $this->data, true); //default template $this->load->view('frontend/templates/default.php', $this->data); } public function search_category(){ $this->load->model("Buscar_model"); $lista = $this->Buscar_model->BuscarCategory(); $dados = array("categories" => $lista); $this->load->view('frontend/pages/buscar.php', $dados); } } // MODEL // <?php class Buscar_model extends CI_Model{ public function getBuscar( $keyword=null ){ if($keyword){ $this->db->like('client_name', $keyword); $this->db->or_like('category_name', $keyword); $this->db->or_like('client_description', $keyword); $this->db->or_like('city_name', $keyword); $this->db->where('client_active', 1); } return $this->db->get("base_clie_total")->result_array(); } public function BuscarCategory(){ return $this->db->get("categories")->result_array(); } } // VIEW // <body> <section class="hero is-info"> <div class="hero-head"> <header class="nav"> <div class="container"> <div class="nav-left"> <a class="nav-item logo" href="<?= $base_url ?>"> <img src="<?= $base_url ?>assets/img/blank.png" alt="Site"> </a> </div> <div class="nav-right nav-menu"> <?= $navigation ?> </div> </div> </header> </div> </section> <section class="section"> <div class="container"> <h2 class="title">Buscar</h2> <?php foreach ($lista as $categ) : ?> <? $categ ['category_name'] ?> <?php endforeach ?> /*/    ERRO 1: /*/
          A PHP Error was encountered
      Severity: Notice
      Message: Undefined variable: lista
      Filename: pages/buscar.php
      Line Number: 26
      Backtrace:
      File: D:\BF\SITE\application\views\frontend\pages\buscar.php
      Line: 26
      Function: _error_handler
      File: D:\BF\SITE\application\controllers\Buscar.php
      Line: 30
      Function: view
      File: D:\BF\SITE\index.php
      Line: 322
      Function: require_once

      /*/    ERRO 2: /*/

      A PHP Error was encountered
      Severity: Warning
      Message: Invalid argument supplied for foreach()
      Filename: pages/buscar.php
      Line Number: 26
      Backtrace:
      File: D:\BF\SITE\application\views\frontend\pages\buscar.php
      Line: 26
      Function: _error_handler
      File: D:\BF\SITE\application\controllers\Buscar.php
      Line: 30
      Function: view
      File: D:\BF\SITE\index.php
      Line: 322
      Function: require_once
    • By RafaelScharf
      Olá, sou inciante em desenvolvimento e estou trabalhando em um sistema de ponto de venda.
       
      Quando faço a busca para vincular o cliente na venda ele da erro na requisição Ajax.
       
      Quando faço a busca retorna o seguinte erro no console:
      GET http://localhost/aroeira/distribuidora/emporium/customers/suggestions?term=R&limit=10&_=1569833733307 404 (Not Found) [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/. Veja o código da view/default/pos/add.php
      <?php if ($this->input->get('customer')) {?> if (!localStorage.getItem('positems')) { localStorage.setItem('poscustomer', <?=$this->input->get('customer');?>); } else if (!localStorage.getItem('poscustomer')) { localStorage.setItem('poscustomer', <?=$customer->id;?>); } <?php } else {?> if (!localStorage.getItem('poscustomer')) { localStorage.setItem('poscustomer', <?=$customer->id;?>); } <?php } ?> if (!localStorage.getItem('postax2')) { localStorage.setItem('postax2', <?=$Settings->default_tax_rate2;?>); } $('.select').select2({minimumResultsForSearch: 7}); var cutomers = [{ id: <?=$customer->id;?>, text: '<?=$customer->company == '-' ? $customer->name : $customer->company;?>' }]; $('#poscustomer').val(localStorage.getItem('poscustomer')).select2({ minimumInputLength: 1, data: [], initSelection: function (element, callback) { $.ajax({ type: "get", async: false, url: "<?=site_url('customers/getCustomer')?>/" + $(element).val(), dataType: "json", success: function (data) { callback(data[0]); } }); }, ajax: { url: site.base_url + "customers/suggestions", dataType: 'json', quietMillis: 15, data: function (term, page) { return { term: term, limit: 10 }; }, results: function (data, page) { if (data.results != null) { return {results: data.results}; } else { return {results: [{id: '', text: 'No Match Found'}]}; } } } }); if (KB) { display_keyboards(); var result = false, sct = ''; $('#poscustomer').on('select2-opening', function () { sct = ''; $('.select2-input').addClass('kb-text'); display_keyboards(); $('.select2-input').bind('change.keyboard', function (e, keyboard, el) { if (el && el.value != '' && el.value.length > 0 && sct != el.value) { sct = el.value; } if(!el && sct.length > 0) { $('.select2-input').addClass('select2-active'); $.ajax({ type: "get", async: false, url: "<?=site_url('customers/suggestions')?>/" + sct, dataType: "json", success: function (res) { if (res.results != null) { $('#poscustomer').select2({data: res}).select2('open'); $('.select2-input').removeClass('select2-active'); } else { bootbox.alert('no_match_found'); $('#poscustomer').select2('close'); $('#test').click(); } } }); } }); }); $('#poscustomer').on('select2-close', function () { $('.select2-input').removeClass('kb-text'); $('#test').click(); $('select, .select').select2('destroy'); $('select, .select').select2({minimumResultsForSearch: 7}); }); $(document).bind('click', '#test', function () { var kb = $('#test').keyboard().getkeyboard(); kb.close(); //kb.destroy(); $('#add-item').focus(); }); } Veja o código do controller Costumer/suggestion
      function suggestions($term = NULL, $limit = NULL) { // $this->sma->checkPermissions('index'); if ($this->input->get('term')) { $term = $this->input->get('term', TRUE); } if (strlen($term) < 1) { return FALSE; } $limit = $this->input->get('limit', TRUE); $rows['results'] = $this->companies_model->getCustomerSuggestions($term, $limit); return $this->sma->send_json($rows); } veja agora a model company_model.php
      public function getCustomerSuggestions($term, $limit = 10) { $this->db->select("id, (CASE WHEN company = '-' THEN name ELSE CONCAT(company, ' (', name, ')') END) as text", FALSE); $this->db->where(" (id LIKE '%" . $term . "%' OR name LIKE '%" . $term . "%' OR company LIKE '%" . $term . "%' OR email LIKE '%" . $term . "%' OR phone LIKE '%" . $term . "%') "); $q = $this->db->get_where('companies', array('group_name' => 'customer'), $limit); if ($q->num_rows() > 0) { foreach (($q->result()) as $row) { $data[] = $row; } return $data; } } Ja tentei alterar o async: false para async: true e não funcionou. 
    • By dutopfave
      Boa Tarde, aguem aqui já conseguiu quebrar/burlar o captcha do sefaz pra consulta NFE ?
    • By Felipe Torres
      Galera,
      Estou tendo um warning no Codeigniter e não estou sabendo resolver. 
      Já atualizei o Codeigniter para a versão 3.1.10
      Procurei espaços em branco nas tags
       
      O Erro é esse:
      A PHP Error was encountered Severity: Warning Message: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? Filename: libraries/Grocery_CRUD.php Line Number: 2836 Backtrace: File: /opt/lampp/htdocs/tiana/application/controllers/Admin.php Line: 6 Function: __construct File: /opt/lampp/htdocs/tiana/index.php Line: 315 Function: require_once Meu Controller Admin.php
       
      <?php class Admin extends CI_Controller { public function __construct() { parent::__construct(); if($this->session->userdata("logado")) { if(!$this->uri->segment(2) == "sair") { redirect('admin/login'); } } } public function entrar(){ $alerta = null; if($this->input->post('entrar') === 'entrar') { if($this->input->post('captcha')) redirect('admin/login'); //Define as regras de validação $this->form_validation->set_rules('email','EMAIL', 'required|valid_email'); $this->form_validation->set_rules('senha','SENHA', 'required|min_length[6]|max_length[20]'); //Executa as regras de validação if ($this->form_validation->run() === TRUE) { //Carrega o model usuarios_model $this->load->model('usuarios_model'); //Armazena os dados do formulário em variáveis $email = $this->input->post('email'); $senha = $this->input->post('senha'); //Executando o método check_login do model $login_existe = $this->usuarios_model->check_login($email, $senha); //verifica se os dados digitados estão corretos if($login_existe){ //login atorizado $usuario = $login_existe; // Configurar os dados da sessão $session = array( 'email' => $usuario["email"], 'created' => $usuario["created"], 'logado' => TRUE ); // inicia a sessão $this->session->set_userdata($session); redirect('painel'); //iniciar a sessão e redirecionar para algum lugar restrito }else{ $alerta = array( "class" => "danger", "mensagem" => "Atenção! Login inválido, senha ou email incorrentos." ); } }else{ $alerta = array( "class" => "danger", "mensagem" => "Atenção! Falha na validação do formulário". validation_errors() ); } } $dados = array( "alerta" => $alerta ); $this->load->view('admin/login', $dados); } public function sair(){ $this->session->sess_destroy(); redirect ('admin/entrar'); } }  
    • By Simioni
      Olá, estou com um dificuldade, estou bolando um calendário de reserva, eu tenho as datas fixas, por exemplo, 07/09/2019, 14/09/2019, 15/09/2019 e cada dia tem 30 vagas disponíveis, o que estou apanhado é em mostrar somente um vez no calendário.
      Eu tenho as tabelas:
      beneficios_calendario

       
      e a beneficios_reserva:

       
      Meu model:
       
      public function vagas_disponiveis() { $this->db->select('*'); $this->db->from('beneficios_calendario'); $query = $this->db->get(); $dias = $query->result_array(); $this->db->select('count(*) as cnt, data_reserva'); $this->db->from('beneficios_reserva'); $this->db->group_by('data_reserva'); $query = $this->db->get(); $reservas = $query->result_array(); $data = array(); foreach ($dias as $dia) { foreach ($reservas as $reserva) { if ($reserva['data_reserva'] == $dia['start']) { $vagas = $dia['title'] - $reserva['cnt']; $data[] = array( 'title' => $vagas, 'start' => $dia['start'], 'color' => $dia['color'], ); } } $data[] = array( 'title' => $dia['title'], 'start' => $dia['start'], 'color' => $dia['color'], ); } echo json_encode($data); }
       
       
      Obrigado.
×

Important Information

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