2011-07-31 8 views
0

보안 문자를 표시하려면 등록 페이지를 얻으려고합니다. 등록 컨트롤러와 등록보기가 있습니다.CodeIgniter로 보안 문자 만들기

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 세대 코드를 포함시키는 것입니다.

누구나 조언을 얻었습니까?

난 당신의 코드에 대한 두 가지 고려 사항을 본
+0

codeigniter를 모르지만 작성한 것으로부터 '$ this-> load-> view ('register ', array ('cap'=> $ cap));'? 그런 다음 명명 된 값을 가진 배열을 전달합니다 (뷰 메서드가 원하는 것 같습니다) – Flambino

+0

이미 시도했지만'Undefined variable : cap' 오류가 발생했습니다. – Josh

+0

답변이있는 경우 대답으로 게시하고 답변으로 표시 함 – mattumotu

답변

0

는 :

1) 나는 당신이보기에 전달하려는 경우 "캡"변수는이 같은 뭔가해야 그래서,이 컨트롤러 기능 이해 :

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

Loadview() 함수의 첫 번째 매개 변수는 함수 이름이고 두 번째 매개 변수는 뷰에 보낼 모든 매개 변수가있는 배열이며 세 번째 매개 변수는 뷰를 원시로 반환하려는 경우입니다 문자열 (기본적으로 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 정보는 그렇지 않습니까? 그래서 당신은 더 나은 보안 문자 모델로 정보를 전송해야합니다

  • 이 모델에서 모델을 작성/captcha_model.php :

    class Captcha_model extends CI_Model { 
         function insert_captcha($captcha){ 
         //... 
         //return true if it works; false otherwise 
         } 
        } 
    
  • 컨트롤러 기능에서 당신은 그것을 사용할 수 있습니다

    $this->load->model('captcha_model'); 
    $this->captcha_model->insert_captcha($captcha);