2011-04-08 17 views
0

さて、私はこのサイトで尋ねられた同様の質問を見たことがありますが、私はこの特定の問題に関するすべての手持ち情報を持っていません!CodeIgniter reCaptcha Trouble

私は私はそれが生成されたHTML内に表示されているが、私は取得するかどうかはわかりませんreCAPTCHAののJSのバージョンとJSのバージョンではCodeIgniterの1.7.1

のために作られたPHPのバージョンを使用しての間でどっちつかずの状態にしています適切な結果がPHPフォームに渡されます。周囲のフォームは現在、 "any"テキスト入力があったかどうかはPHPにしか書かれていません。私は何かが提出されたかどうかを確認するためにcaptchaのテキスト入力フィールドを監視することができますが、これは実際のjavascriptが正しい結果を確認しません。 Recaptcha.createでjavascriptが生成するHTMLからの呼び出しを取得できるPHP関数呼び出しが必要です。

あなたは考えているかもしれません:codeigniterはPHPですからなぜPHPのバージョンのrecaptchaを使用しないのですか? CodeIgniter構造体は、私が扱った最も直感的ではないPHPとMVC構造体です。私が編集しているこのサイトで必要な関数呼び出しを見つけることは、リバースエンジニアリングの練習に変わっています。

私はここでもhttps://github.com/seanmcgary/Codeigniter-ReCaptchaで作成されたPHPバージョンを持っていて、古典的なCodeIgniterフレーバーのように、ドキュメントは基本的に存在しません。私はそのバージョンがCodeIgniter 1.7のものだと知っていますが、reCaptchaのバージョンはわかりません。

私をcodeigniter wikiにリンクさせないでください。ちょうど関連する助けてください。

JSバージョンとPHPバージョンの一部を実装するには、のいずれかのバージョンがより実用的かもしれないので、複雑になってきています。だから私は皆さんにおねがいします、ありがとう!

答えて

0

This wiki article and library are extremely simple。ここにリンクを置くだけでいいのではないので、wiki記事のサンプルコードを参考にしてください。

コードは実際には非常に自明です。設定を公開鍵と秘密鍵で設定し、コントローラーでrecaptcha & form_validationライブラリーをロードし、検証の状況に応じて適切なビューを表示します。

のconfig/reCAPTCHAの:

$config['recaptcha'] = array(
    'public'=>'YOUR PUBLIC KEY', 
    'private'=>'YOUR PRIVATE KEY', 
    'RECAPTCHA_API_SERVER' =>'http://www.google.com/recaptcha/api', 
    'RECAPTCHA_API_SECURE_SERVER'=>'https://www.google.com/recaptcha/api', 
    'RECAPTCHA_VERIFY_SERVER' =>'www.google.com', 
    'RECAPTCHA_SIGNUP_URL' => 'https://www.google.com/recaptcha/admin/create', 
    'theme' => 'white' 
); 

コントローラ:

function index() 
    { 
    $this->load->library('recaptcha'); 
    $this->load->library('form_validation'); 
    $this->lang->load('recaptcha'); 
    $this->load->helper('form'); 

    if ($this->form_validation->run()) 
    { 
     $this->load->view('recaptcha_demo',array('recaptcha'=>'Yay! You got it right!')); 
    } 
    else 
    { 
     //the desired language code string can be passed to the get_html() method 
     //"en" is the default if you don't pass the parameter 
     //valid codes can be found here:http://code.google.com/apis/recaptcha/docs/customization.html#i18n 
     $this->load->view('recaptcha_demo',array('recaptcha'=>$this->recaptcha->get_html())); 
    } 
    } 
+0

さて、私はすでに設定することを持っていますが、私は、フォームの残りの部分とどのように動作するかわかりません。名前フィールド、電子メール、電話番号があります。これらのフィールドにはコンテンツがあるかどうかを確認するために、recaptchaコードから値を取得する必要があります。 $ this-> load->ライブラリ関数をコピーできますか?また、私はヘルパーという名前のフォルダやその存在しないフォルダのフォームという名前のファイルには何も持っていません。 – CQM

+0

フォームヘルパーは[ヘルパー](http://codeigniter.com/user_guide/helpers/form_helper.html)に組み込まれています。私は、[フォームの検証](http://codeigniter.com/user_guide/libraries/form_validation.html)クラスの仕組みが理解できないという印象を受けています。 '$ this-> form_validation-> set_rules( 'email'、 'Email'、 'required');などのルールを設定し、それらがすべて有効であれば' $ this-> form_validation-> run() ' trueを返します。ドキュメンテーションは、どのように動作するのか、例を挙げて説明しています。 – akpb

+0

だから私はコードをダウンロードします。すべてのファイルを適切なフォルダに移動します。 config/recaptcha.phpファイルのキーを設定します。次に、私はフォームのロジックを提出する場所に$ this-> form_validation-> run()関数を入れます。 HTMLで私は何をする??私はユーザーの入力のためにcaptchaを表示する必要があります。私は非コードイグナイター文書にPHPのrecaptchaを追加するためのGoogleのコードを参照してください、しかし、私はその部分が適切であるか分からない。特定のファイルをどのように呼び出しているのかよく分かりません。今すぐ私は – CQM

0

私が持っている私のreCAPTCHAはCodi​​gniter上でどのように動作するかのアイデアについて。私ははっきりとあなたにそれを説明することはできませんが、私はあなたが以下のこのコードを理解することができることを望む:あなたの設定ファイルにこれを追加

#google reCaptcha 
$config['recaptcha_sitekey'] = 'put site key'; //Recaptcha Site key 
$config['recaptcha_secretkey'] = 'put secret key'; //Recaptcha Secret Key 

$this->form_validation->set_rules('g-recaptcha-response', 'recaptcha validation', 'required|callback_validate_captcha'); 
     $this->form_validation->set_message('validate_captcha', 'Please check the the captcha form'); 

ご確認フォームにこのコードを追加していけませんrecaptchaが有効になるコントローラにこれを追加することを忘れないでください。

//ADDITIONAL CODES 
    function validate_captcha() { 
     $captcha = $this->input->post('g-recaptcha-response'); 
     $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$this->config->item('recaptcha_sitekey')."&response=" . $captcha . "&remoteip=" . $_SERVER['REMOTE_ADDR']); 

     if ($response . 'success' == false) { 
      return FALSE; 
     } else { 
      return TRUE; 
     } 
    } 

A reCAPTCHAのは

<div class="g-recaptcha" data-sitekey="<?php echo $this->config->item('recaptcha_sitekey') ?>"></div> 

を表示されるとJavaScriptを忘れ `tをフォームにこのコードDD

<script src="https://www.google.com/recaptcha/api.js"></script> 

そして、あなたはあなたのモーダルにこのコードを追加モーダルメインページから2回のreCAPTCHAを表示させたい場合

<script> 
    createRecaptcha(); 
    function createRecaptcha() { 
    grecaptcha.render("captcha", {sitekey: "<?php echo $this->config->item('recaptcha_sitekey') ?>", theme: "light"}); 
    } 
</script> 

あなたがreCAPTCHAのは

表示されますたい場所のため、このコードを追加します。

これは私が行うことができ、すべての^ _^

デモです:https://www.waraywarayako.ph/