2011-07-31 5 views
0

私は登録ページを取得してCAPTCHAを表示しようとしています。私は登録コントローラと登録ビューを持っています。CodeIgniterでCAPTCHAを作成する

public function index() 
{ 
    $this->load->helper('captcha'); 
    $cap = create_captcha(array(
     'img_path' => './captcha/', 
     'img_url' => 'http://localhost/captcha/', 
     'img_width' => 150, 
     'img_height' => 40 
    )); 
    $data = array(
     'captcha_time' => $cap['time'], 
     'ip_address' => $this->input->ip_address(), 
     'word' => $cap['word'] 
    ); 
    $query = $this->db->insert_string('captcha', $data); 
    $this->db->query($query); 

    $this->load->view('header'); 
    $this->load->view('register', $cap); 
    $this->load->view('footer'); 
} 

そして、私のレジスタビューから該当ビット(register.php):

A PHP Error was encountered 
Severity: Notice 
Message: Undefined variable: cap 
Filename: views/register.php 
Line Number: 35 

<h3>Security question</h3> 
<li> 
    <label for="captcha">Enter the CAPTCHA code below</label> 
    <?php echo $cap['image']; ?> 
</li> 

問題がある、私はこのエラーを取得してい

は、ここに私のコントローラのインデックスメソッドです

ユーザーガイドを見た後、私のコントローラから私のビューに渡すデータのようです私が望むことをやるための唯一の方法は、実際にMVCパターンに従わないように見える私のビューファイルにcaptchaジェネレーションコードを持たせることです。

誰かにヒントがありますか?

私はあなたのコードについての2点を見てきました
+0

私はcodeigniterを知らないが、あなたが書いているものから、あなたは '$ this-> load-> view( 'register'、array ( 'cap' => $ cap)); '?次に、名前付きの値を持つ配列を渡しています(ビューメソッドが望んでいるものと思われます) – Flambino

+0

私はすでにそれを試みましたが、まだ未定義変数:cap'エラーが発生しています。 – Josh

+0

回答がある場合は、回答として投稿し、回答があれば – mattumotu

答えて

0

は:

1)私はあなたがビューに渡したい場合は、「キャップ」変数は、このような何かを行う必要がありますので、それは、このコントローラ機能であることを理解:

$data['cap'] = $cap; 
$this->load->view('register', $data); 

Loadview()関数の最初のパラメータは関数名、2番目はビューに送信するすべてのパラメータを含む配列、3番目のパラメータはビューを生のまま返す場合です文字列(デフォルトではfalse)。

2)あなたはMVCパターンをフォローしたい場合は、DBがモデルに呼び出しをカプセル化するべきである施設CodeIgniterの:あなたのラインでhttp://codeigniter.com/user_guide/general/models.html

私はあなたが保存したいことを理解し
$query = $this->db->insert_string('captcha', $data); 
$this->db->query($query); 

BBDDのcaptcha情報は、そうではありませんか? ですから、より良いキャプチャモデルに情報を送信する必要があります:あなたはそれを使用することができ、コントローラの機能では

class Captcha_model extends CI_Model { 
     function insert_captcha($captcha){ 
     //... 
     //return true if it works; false otherwise 
     } 
    } 
    • は、モデル/ captcha_model.phpでモデルを作成し

      $this->load->model('captcha_model'); 
      $this->captcha_model->insert_captcha($captcha); 
      
  • 関連する問題