データをデータベースに挿入するためのフォームを作成し、データが人間から送られたかどうかを確認するために、既にCIに統合されているCAPTCHAを使用しました。CodeIgniter CAPTCHA validation
これは私のコントローラである:
$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);
}
私の質問は今何CAPTCHAを検証するための最良の方法ですか?
1.)私が既に行ったコールバックを作成しましたが、フォームを送信すると新しいCAPTCHAコードでエラーが発生したため問題がありました。
2.)CAPTCHAのコードをデータベースに挿入し、そこからチェックします。問題は、データベースの読み込みが多くなり、非常に忙しいためです。
2番目の質問です。このCAPTCHAはフォルダ内の.jpg画像のみを保存しているのですか、それとも他の形式ですか? (私は、彼らが使用された後、このキャプチャのを削除したいので、私はこれを聞いてるのよ。)
こんにちは、img_pathは私がコードを保存するかコードを作成する予定ですか?どのように実際に動作するのか混乱しています –
@Akhilraj N S:私はあなたの手順に従ってきましたが、capthaは動作していないようで、フォームはとにかく提出されます。 私はあなたのコールバック関数をそのまま使っていましたが、このinsetedも試しました:if(0!== strcmp($ this-> input-> post( 'captcha')、$ this-> session-> userdata ['captcha' ]))でも、すべて同じ効果があります。 最後に、フォルダから画像を削除しようとしましたが、「unlink(フルパス\キャプチャ):権限が拒否されました」というエラーが表示されます。 – Lykos
@Deepanshu、img_pathは、キャプチャ画像を保存するフォルダ/ディレクトリです。そのフォルダを作成する必要があります。そこに保存される画像には、キャプチャを介してPHPで作成された画像がありました。 – user1149244