gpt4 book ai didi

php - CodeIgniter 验证码验证

转载 作者:可可西里 更新时间:2023-11-01 00:15:54 25 4
gpt4 key购买 nike

我已经创建了一些表单来将数据插入数据库并检查数据是否是从人那里发送的,我使用了已经集成到 CI 中的验证码。

这是我的 Controller :

    $checkrules = array(
'img_path' => realpath(APPPATH . '../upload/checking/img') . '/',
'img_url' => base_url() . 'upload/checking/img/',
'font_path' => realpath(APPPATH . '../upload/checking/font.ttf'),
'img_width' => 150,
'img_height' => 30,
'expiration' => 7200
);

$check = create_captcha($checkrules);
$data['checkimg'] = $check['image'];

$this->form_validation->set_rules('name', 'Name', 'required|max_length[40]|xss_clean');
$this->form_validation->set_rules('email', 'E-mail', 'required|valid_email|xss_clean');
$this->form_validation->set_rules('website', 'Website', 'max_length[80]|prep_url|xss_clean');
$this->form_validation->set_rules('comment', 'Comment', 'required|xss_clean');
$this->form_validation->set_rules('check', 'Check', 'required|xss_clean');

if ($this->form_validation->run() == FALSE)
{
$this->load->view('cms/theme', $data);
}
else
{
echo "success";
$this->load->view('cms/theme', $data);
}

我现在的问题是验证验证码的最佳方式是什么?

1.) 创建回调,我已经完成了,但是出现了问题,因为当我发送表单时出现新的验证码错误。

2.) 将 CAPTCHA 的代码插入数据库并从中进行检查。问题是因为会加载很多数据库,会很忙。

第二个问题。这个验证码是只在文件夹中保存 .jpg 图片还是可以是任何其他格式? (我问这个是因为我想在使用后删除这个验证码。)

最佳答案

 * Example of captcha validation without database useage
* Instead of it used session to store captcha value
* The images will be deleted after the use

public function index()
{
$this->load->helper(array('form', 'url','captcha'));
$this->load->library('form_validation');

$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
$this->form_validation->set_rules('captcha', 'Captcha', 'callback_validate_captcha');

if($this->form_validation->run() == FALSE)
{

$original_string = array_merge(range(0,9), range('a','z'), range('A', 'Z'));
$original_string = implode("", $original_string);
$captcha = substr(str_shuffle($original_string), 0, 6);

//Field validation failed. User redirected to login page
$vals = array(
'word' => $captcha,
'img_path' => './captcha/',
'img_url' => 'http://mycodeignitor.org/captcha/',
'font_path' => BASEPATH.'fonts/texb.ttf',
'img_width' => 150,
'img_height' => 50,
'expiration' => 7200
);

$cap = create_captcha($vals);
$data['image'] = $cap['image'];

if(file_exists(BASEPATH."../captcha/".$this->session->userdata['image']))
unlink(BASEPATH."../captcha/".$this->session->userdata['image']);

$this->session->set_userdata(array('captcha'=>$captcha, 'image' => $cap['time'].'.jpg'));
$this->load->view('index_index',$data);
}
else
{
if(file_exists(BASEPATH."../captcha/".$this->session->userdata['image']))
unlink(BASEPATH."../captcha/".$this->session->userdata['image']);

$this->session->unset_userdata('captcha');
$this->session->unset_userdata('image');
redirect('home', 'refresh');
}



}

public function validate_captcha(){
if($this->input->post('captcha') != $this->session->userdata['captcha'])
{
$this->form_validation->set_message('validate_captcha', 'Wrong captcha code, hmm are you the Terminator?');
return false;
}else{
return true;
}

}

关于php - CodeIgniter 验证码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10571804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com