表单验证代码点火器不工作,如何上传图片



我是codeigniter的新手,在使用表单验证将数据插入数据库并上传一些图片时遇到了一些问题。首先,当我在没有任何输入的情况下单击提交按钮时,表单验证的错误信息没有显示出来。第二,当我给出一些输入,然后我点击提交按钮,它只是刷新页面。第三,我学会了上传一些图片到数据库,但我不确定它是正确的。请帮帮我,我感谢每一个回答和建议。

我的观点(transfer.php(:

<section class="columns is-centered my-5">
<div class="container column is-half">
<form action="<?= base_url() ?>bukti_add" method="POST">
<p class="has-text-warning-light">
<?=
validation_errors();
?>
</p>
<input type="hidden" name="bukti_id" value="">
<input class="input" type="text" name="bukti_nama_pengirim" value="" placeholder="Masukan Nama Pengirim">
<select class="select input" name="bukti_bank_pengirim" id="">
<option value="">---Pilih Bank Pengirim---</option>
<option value="">Mandiri</option>
<option value="">BCA</option>
<option value="">BNI</option>
<option value="">BRI</option>
<option value="">CIMB</option>
<option value="">Bank Jateng</option>
</select>
<input class="input" type="text" name="bukti_jumlah_transfer" value="" placeholder="Masukan Jumlah Transfer">
<div class="file has-name is-danger">
<label class="file-label"">
<input class=" file-input" type="file" name="bukti_img">
<span class="file-cta">
<span class=" file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label">
Choose a file…
</span>
</span>
<span class="file-name" style="background-color: white;">
Pilih File Foto Bukti Transfer
</span>
</label>
</div>
<section>
<button class="button is-danger" name="">
Lanjut
</button>
</section>
</form>
</div>

我的型号(M_checkout(:

private function _uploadImage()
{
$config['upload_path']          = './upload/bukti/';
$config['allowed_types']        = 'gif|jpg|png';
$config['file_name']            = $this->get_payment_by_id;
$config['overwrite']            = true;
$config['max_size']             = 1024; // 1MB
// $config['max_width']            = 1024;
// $config['max_height']           = 768;
$this->load->library('upload', $config);
if ($this->upload->do_upload('bukti_img')) {
return $this->upload->data("file_name");
}
return "default.jpg";
}
public function bukti_to_db()
{
$data = array();
$data['bukti_nama_pengirim'] = $this->input->post('bukti_nama_pengirim');
$data['bukti_bank_pengirim'] = $this->input->post('bukti_bank_pengirim');
$data['bukti_jumlah_transfer'] = $this->input->post('bukti_jumlah_transfer');
$data['bukti_img'] = $this->_uploadImage();
$this->db->insert('bukti', $data);
$bukti_id_save = $this->db->insert_id();
$sdata = array();
$sdata['bukti_id'] = $bukti_id_save;
$this->session->set_userdata($sdata);
}

我的控制器:

public function bukti_add()
{
$this->form_validation->set_rules('bukti_nama_pengirim', 'Nama', 'trim|required');
$this->form_validation->set_rules('bukti_bank_pengirim', 'Bank', 'trim|required');
$this->form_validation->set_rules('bukti_jumlah_transfer', 'Jumlah Transfer', 'trim|required');
$this->form_validation->set_rules('bukti_img', 'Bukti Transfer', 'trim|required');
if ($this->form_validation->run()) {
$this->M_checkout->bukti_to_db();
redirect('thank', 'refresh');
} else {
redirect('transfer', 'refresh');
}
}

我的数据库:数据库

您应该在开发时打印错误。它通常告诉你出了什么问题。例如:

if ($this->upload->do_upload('bukti_img')) {
return $this->upload->data("file_name");
} else {
print_r($this->upload->display_errors());
exit;
}
if ($this->form_validation->run()) {
$this->M_checkout->bukti_to_db();
redirect('thank', 'refresh');
} else {
print_r(validation_errors());
exit;
}

尽管我很确定你不能用form_validation那样验证<input class=" file-input" type="file" name="bukti_img">。由于您正在验证$_POST,而您的文件位于$_FILES变量中。对文件上传功能进行文件验证。

最新更新