2016-07-27 2 views
0

코드 케이스를 사용하여 사용자 등록을 구현하려고합니다. 모델, 뷰 및 컨트롤러를 만들었습니다.PHP Codeigniter - 심각도 : Controller 및보기에 대한 알림

나는 내가 그것을 정의되지 않은 변수 오류를 저런 애되어 다음도 왜 users.php에서 변수 오류를 정의

A PHP Error was encountered 
Severity: Notice 
Message: Undefined variable: errors 
Filename: register_user.php 

즉 약간의 오류가 직면하고있다. 다음은

users.php (컨트롤러)

function register(){ 
     if($_POST){ 

      $config=array(
       array(
        'field'=>'username', 
        'label'=>'Username', 
        'rules'=>'trim|required|min_length[3]|is_unique[users.username]' 
       ), 
       array(
        'field'=>'password', 
        'label'=>'Password', 
        'rules'=>'trim|required|min_length[5]' 
       ), 
       array(
        'field'=>'password2', 
        'label'=>'Password confirmed', 
        'rules'=>'trim|required|min_length[5]|matches[password]' 
       ), 
       array(
        'field'=>'email', 
        'label'=>'Email', 
        'rules'=>'trim|required|is_unique[users.email]|valid_email' 
       ) 
       ); 
      $this->load->library('form_validation'); 
      $this->form_validation->set_rules($config); 
      if($this->form_validation->run() == FALSE){ 
       $data['errors']=validation_errors(); 
      }else{ 
        $data=array(
        'username'=>$_POST['username'], 
        'password'=>$_POST['password'], 
        'user_type'=>$_POST['user_type'], 
        ); 
       $this->load->model('user'); 
       $userid=$this->user->create_user($data); 
       $this->session->set_userdata('userID',$userid); 
       $this->session->set_userdata('user_type'.$_POST['user_type']); 
       redirect(base_url().'posts'); 
      } 
     } 
     $this->load->helper('form'); 
     // $this->load->view('header'); 
     $this->load->view('register_user'); 
     // $this->load->view('footer'); 
    } 


Below is user.php (model) 

    function create_user($data){ 
     $this->db->insert('users',$data); 
    } 


Below is register_user.php (View) 

    <?php if($errors){ ?> 
<div style="background:red; color:white;"> 
    <?php echo $errors ?> 
</div> 

<?php } ?> 

<?php echo form_open(base_url().'users/register'); ?> 
    <p>Username: <?php 
       $data_form=array(
        'name'=>'username', 
        'size'=>50, 
        'style'=>'border:1px solid black', 
        'id'=>'username' 
        ); 
       echo form_input($data_form);     
       ?> 
    </p> 

<p> 
    <?php echo form_label('Email','email')?>: <?php 
                $data_form=array(
                 'name'=>'email', 
                 'size'=>50, 
                 'style'=>'border:1px solid black', 
                 'id'=>'email' 
                 ); 
                echo form_input($data_form); 
                ?> 
</p> 

    <p><?php echo form_label('Password','password')?>: <?php 
      $data_form=array(
       'name'=>'password', 
       'size'=>50, 
       'style'=>'border:1px solid black', 
       'id'=>'password' 
       ); 
      echo form_password($data_form);     
                 ?> 
    </p> 

<p> 
    <?php echo form_label('Password Confirmed','password2')?>: <?php 
                $data_form=array(
                 'name'=>'password2', 
                 'size'=>50, 
                 'style'=>'border:1px solid black', 
                 'id'=>'password2' 
                 ); 
                echo form_password($data_form); 
                ?> 
</p> 

    <p> 
     <?php echo form_label('User Type','user_type')?>:<?php 
        $options=array(
         ''=>'--', 
         'admin'=>'Admin', 
         'author'=>'Author', 
         'user'=>'User', 
        ); 
        $js='onchange="alert(\'hi\');" style="border:1px solid black"'; 
        echo form_dropdown('user_type',$options,'',$js); 
     ?> 
    </p> 
    <p><?php echo form_submit('','Register'); ?></p> 
<?php echo form_close(); ?> 

이 저를 제발입니다.

+0

이 'register_user.php'를 임의의 폴더에 배치 했습니까 ?? – Poonam

답변

1

오류가 당신에게 오류가 무엇인지에 대한 힌트를주고 삭제된다

아래의 오류가 변수가 전혀 존재하지 않으며 어디서나 설정되지 않음을 의미합니다.

알림 메시지 : 정의되지 않은 변수 : 오류 파일 이름 : register_user PHP는

당신이보기 내부의 변수 $errors 확인되는 일을하지만 변수가 존재하지 않습니다. 그리고 그 변수가 존재하지 않는 이유는 무엇입니까? .

귀하가 $data['errors']를 정의하지만, 당신이보기에 전달 된 적이 있기 때문에 : 당신의 라인을보고 :

$this->load->view('register_user',$data); 

심지어 내부 :

$this->load->view('register_user'); 

은 아래와 같이 할 필요가 변수가 존재하지 않으면 뷰 내에 isset()을 사용하여 변수가 설정되어 있는지 여부도 확인할 수 있으므로 이렇게 내부에 있어야합니다. register_user.php :

<?php if(isset($errors)){ ?> 
<div style="background:red; color:white;"> 
    <?php echo $errors; ?> 
</div> 

<?php } ?> 

또 하나.

  1. 그것은 사전 :

    입 클래스는 두 가지 목적 : 된답니다 가이드 상태로 $_GET

    ,

    $this->input->post('username'); // for $_POST 
    $this->input->get('username'); // for $_GET 
    $this->input->cookie('cookie_name'); 
    $this->input->server(); 
    

    대신 $_POST를 사용하여 : CodeIgniter의 내부 CodeIgniter의의 입력 클래스를 사용하는 것을 고려 - 보안을 위해 전역 입력 데이터를 처리합니다.

  2. 입력 데이터를 가져 와서 사전 처리하는 데 도움이되는 몇 가지 방법을 제공합니다.
+0

나는 위의 단계를 완료했고 그것은 나를 위해 작동합니다. Mr. Singh 정말 감사합니다. –

+0

흥미로운 점은'form_validation-> run()'이 새로 처리 된 (유효성이 검사 된) 데이터로'$ _POST'를 다시 설정한다는 것입니다.그래서'run()'이 리턴 한 후에'input-> post()'를 사용하는 것에 이점이 없다. 전역 입력은'input' 클래스가 생성 될 때 항상 사전 처리됩니다. 항상 자동으로 발생합니다. 그리고 OP가 성공적으로 검증 된'$ _POST' 항목에 직접 접근하기 때문에'input-> post()'를 호출하는 것보다 안전하고 훨씬 효율적입니다. 그러나 다른 어떤 상황에서도'input' 클래스를 사용하는 것이 가장 좋다는 것에 동의합니다. – DFriend