Не могу отправить письмо в Codeigniter при использовании токена CSRF - PullRequest
0 голосов
/ 02 апреля 2020

, поэтому у меня возникла проблема при отправке электронного письма, когда я хочу отправить электронное письмо после отправки данных со своей страницы, она обнаружила пользовательскую ошибку из моей функции ajax. Ошибка похожа на это «обновление Gagal, браузер akan direload», я уже пытался поместить свой $ this -> _ sendemail () после того, как мой код токена csrf заработал, но это слишком долго, чтобы завершить sh функцию. пожалуйста, помогите мне?

Контроллер:

    public function tambah(){ 
    cekajax(); 
    $post = $this->input->post();   
    $validation = $this->form_validation; 
    $validation->set_rules($this->rules());
    if ($this->form_validation->run() == FALSE){
        $errors = $this->form_validation->error_array();
        $data['errors'] = $errors;
    }else{           
        $password = password_hash($post['password'], PASSWORD_BCRYPT);

        $this->load->model('panggildata_model');
        $propinsi = $this->panggildata_model->panggildata("provinces",array(
            'id'=>$post["propinsi"], 
        )); 
        $kota_kab = $this->panggildata_model->panggildata("regencies",array(
            'id'=>$post["kota_kab"], 
        )); 
        $tanggal_daftar = date('Y-m-d');
        $tabel = "club";
        $kode_awal = "GAN-".str_replace("-", "", $tanggal_daftar);
        $no_reg_club = $this->_kode($tabel,$kode_awal,"no_reg_club");
        $param = array(
            'tanggal_daftar'=>$tanggal_daftar,
            'no_reg_club'=>$no_reg_club,  
            'nama_ketua_club'=>$post["nama_ketua_club"], 
            'nama_club'=>$post["nama_club"], 
            'propinsi'=>$propinsi->row()->name,  
            'kota_kab'=>$kota_kab->row()->name,  
            'alamat'=>$post["alamat"],  
            'no_hp'=>$post["no_hp"],  
            'email'=>$post["email"],  
            'password'=>$password,  
        );
        $this->load->model('simpandata_model');
        $simpan = $this->simpandata_model; 
        $this->_sendEmail();
        if($simpan->simpandata($tabel,$param)){   
            $data['success']= true;
            $data['message']= "Berhasil Register Club";
        }else{
            $errors['fail'] = "Gagal Register Club";
            $data['errors'] = $errors;
        }           
    }
    $data['token'] = $this->security->get_csrf_hash();
    echo json_encode($data); 
} 

 private function _sendEmail() 
{
    $email = $post['email'];
    $config = [
        'protocol'  => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_user' => '',
        'smtp_pass' => '',
        'smtp_port' => 465,
        'mailtype'  => 'html',
        'charset'   => 'utf-8',
        'newline'   => "\r\n"
    ];

    $this->load->library('email', $config);

    $this->email->initialize($config);

    $this->email->from('zixvyweb@gmail.com', 'GAN FC');
    $this->email->to($email);

    $this->email->subject('Account Verification');
    $this->email->message('Selamat Akun anda sudah terverifikasi');

    if ($this->email->send()) {
        return true;
    } else {
        echo $this->email->print_debugger();
        die;
    }
}

Ajax:

   // ajax tambah data start
        $( "#FormulirTambah" ).submit( function (e) {  
        blurForm();       
        var login_url = "<?= base_url('clubs/login_club') ?>";
        $('.help-block').hide();
        $('.form-group').removeClass('has-error');
        $("#submitform").attr("disabled", true).html('Loading ...');   
        var form = $('#FormulirTambah')[0];
        var formData = new FormData(form); 
        $.ajax({
            type        : 'POST',
            url         : '<?php echo base_url()?>registclub/tambah',
            data        : formData, 
            processData: false,
            contentType: false,
            cache: false, 
            dataType    : 'json'
            }).done(function(data) { 
            if ( ! data.success) {       
                $('input[name=<?php echo $this->security->get_csrf_token_name();?>]').val(data.token);
                $("#submitform").attr("disabled", false).html('Submit');
                var objek = Object.keys(data.errors);  
                for (var key in data.errors) {
                    if (data.errors.hasOwnProperty(key)) { 
                        var msg = '<div class="help-block" for="'+key+'">'+data.errors[key]+'</span>';
                        $('.'+key).addClass('has-error');
                        $('input[name="' + key + '"]').after(msg);   
                        $('select[name="' + key + '"]').after(msg);   
                        $('textarea[name="' + key + '"]').after(msg);   
                    }
                    if (key == 'fail') {   
                        new PNotify({
                            title: 'Notifikasi',
                            text: data.errors[key],
                            type: 'danger'
                        }); 
                    }
                }
            } else { 
                $('input[name=<?php echo $this->security->get_csrf_token_name();?>]').val(data.token);
                PNotify.removeAll(); 
                $("#submitform").attr("disabled", false);   
                $('#tambahData').modal('hide'); 
                $('#FormulirTambah')[0].reset(); 
                $('.select2-input').val(null).trigger("change"); 
                $('#submitform').html('Login');
                new PNotify({
                    title: 'Notifikasi',
                    text: data.message,
                    type: 'success'
                });  
                window.location = login_url;   
            }
            }).fail(function(data) {   
                new PNotify({
                    title: 'Notifikasi',
                    text: "Gagal update, browser akan direload",
                    type: 'danger'
                }); 
               window.setTimeout(function() {  location.reload();}, 2000);
            }); 
            e.preventDefault(); 
        }); 
    // ajax tambah data end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...