Codeigniter - как сделать расчет капчи - PullRequest
0 голосов
/ 08 ноября 2018

Я хотел сделать расчетную капчу, моя текущая капча - только ввод текста и цифр, но она работает только потому, что эта капча довольно сложная, поэтому я подумал сделать капчу более легкой для входа в систему, так как вид выглядит как this (изображение здесь) , которое усложняет вход в систему (проигнорируйте userdata для входа в систему и выделите строку, на которой есть капча, и, пожалуйста, скажите, если код слишком длинный, я постараюсь сделать его короче)

Контроллер

public function index(){
        $config = array(
            'img_path'      => 'captcha_images/',
            'img_url'       => base_url().'captcha_images/',
            'img_width'     => '150',
            'img_height'    => 50,
            'word_length'   => 8,
            'font_size'     => 16
        );
        $captcha = create_captcha($config);

        // Unset previous captcha and store new captcha word
        $this->session->unset_userdata('captchaCode');
        $this->session->set_userdata('captchaCode',$captcha['word']);

        // Send captcha image to view
        $data['captchaImg'] = $captcha['image'];

        $data['tampilan'] = $this->m_model->a('judul')->result();
        $this->load->view('login',$data);
    }

    function aksi_login(){
        $data = array('username' => $this->input->post('username', TRUE),
                        'password' => md5($this->input->post('password', TRUE))
        );


        $this->load->model('m_model'); // load model_user
        $hasil = $this->m_model->cek_user($data);
        if ($hasil->num_rows() == 1 && $this->input->post('submit')){
            $inputCaptcha = $this->input->post('captcha');
            $sessCaptcha = $this->session->userdata('captchaCode');
            if($inputCaptcha === $sessCaptcha){
            foreach ($hasil->result() as $sess) {
                $sess_data['logged_in'] = 'Sudah Login';
                $sess_data['id_user'] = $sess->uid;
                $sess_data['username'] = $sess->username;
                $sess_data['level'] = $sess->level;
                $this->session->set_userdata($sess_data);
            }


            if ($this->session->userdata('level')=='1') {
                redirect('admin');
            }
            elseif ($this->session->userdata('level')=='2') {
                redirect('guru');
            }       
        else {
            redirect('welcome/salah');
        }
    }
    else{
                echo "captcha is wrong";
            }
    }
}

вид

<form action="<?php echo base_url()?>welcome/aksi_login" method="post" class="form">
  <h4> Login </h4>

    <inputtype="text" name="username" placeholder="username"/>

    <input name="password" type="password" placeholder="Password"/>


  <a href="<?php echo base_url()?>Welcome" class="refreshCaptcha" ><img src="<?php echo base_url().'asset/foto/refresh.png'; ?>"/></a>
  <p id="captImg"><?php echo $captchaImg; ?></p>
    <inputtype="text" name="captcha" placeholder="Captcha" />


  <input type="submit" name="submit" value="Log in"/>

</form>

1 Ответ

0 голосов
/ 08 ноября 2018

Вы можете сделать переменную 'word_length' => $var и на reCaptcha использовать меньшее число.

...