Codeigiter には captcha helperがあります。
まず、キャプチャ画像を保存できるフォルダーを作成し、このフォルダーに読み取り/書き込み操作を実行する権限を付与します。この場合、captcha
codeigniter インスタンスのルートにフォルダーを作成しました。
captcha
次に、ヘルパーをロードします。
$this->load->helper('captcha');
設定を使用してキャプチャのインスタンスを開始しましょう (フォーム内Controller
またはView
フォームで実行できます)。
$rand_string = strtoupper(random_string('nozero', 4));
$settings = array(
'word' => $rand_string,
'img_path' => './captcha/',
'img_url' => base_url() .'captcha/',
'img_width' => '250',
'img_height' => 35,
'expiration' => 7200
);
$cap = create_captcha($settings);
$this->session->set_userdata('captchaWord',$cap['word']);
session
生成されたキャプチャ ワードを作成するたびに (たとえば、ページの更新時などに)保持していることに注意してください。captcha word
このようにして、オリジナルと自分の入力を比較できform
ます。次に、生成されたキャプチャ画像をフォーム (ビュー) のどこかに入力フィールドとともに表示します。
<form id="my_form">
<input type="text" name="captcha" value=""/>
<?= $cap['image']; ?>
</form>
今、私がしなければならないことは、input
受け取ったmy_form
実際のキャプチャ値と比較することです(フォーム送信を処理するコントローラーで):
$userCaptcha = $this->input->post('captcha');
$actual_word = $this->session->userdata('captchaWord');
if( strcmp(strtoupper($userCaptcha),strtoupper($actual_word)) == 0 ) {
// input and captcha are the same
}