2015-07-11 231 views
-1

我寫了一些註冊頁面。我想創建成功頁面,並註冊成功信息。 這是我的控制器CodeIgniter - 如何將數組從控制器傳輸到控制器

function register(){ 
    $data['success']=0; 
    $data['error']=0; 
    if($_POST){ 

     $config=array(
      array(
       'field'=>'username', 
       'label'=>'Login', 
       'rules'=>'trim|required|min_length[3]|max_length[64]|is_unique[users.username]' 
      ), 
      array(
       'field'=>'email', 
       'label'=>'Adres email', 
       'rules'=>'trim|required|is_unique[users.email]|valid_email' 
      ), 
      array(
       'field'=>'password', 
       'label'=>'Hasło', 
       'rules'=>'trim|required|min_length[3]|max_length[16]' 
      ), 
      array(
       'field'=>'password2', 
       'label'=>'Potwierdź hasło', 
       'rules'=>'trim|required|matches[password]' 
      ), 
      array(
       'field'=>'namePTS', 
       'label'=>'Imie i nazwisko', 
       'rules'=>'trim|required|max_length[64]' 
      ), 
      array(
       'field'=>'idPTS', 
       'label'=>'ID postaci', 
       'rules'=>'trim|required|integer|max_length[10]' 
      ) 
     ); 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules($config); 
     if ($this->form_validation->run() == FALSE){ 
      $data['error']=1; 
      $data['errors']=validation_errors(); 
     } else { 
      $data=array(
       'username'=>$_POST['username'], 
       'email'=>$_POST['email'], 
       'password'=>sha1($_POST['password']), 
       'namePTS'=>$_POST['namePTS'], 
       'idPTS'=>$_POST['idPTS'] 
      ); 

      $this->load->model('user'); 
      $userid=$this->user->create_user($data); 
      if(!$userid){ 
       $data['success']=1; 
       redirect(base_url().'users/success'); 
      } 
     } 
    } 
    $this->load->view('startHeader'); 
    $this->load->view('register',$data); 
    $this->load->view('startFooter'); 
} 

function success(){ 
    $this->load->view('startHeader'); 
    $this->load->view('success',$data); 
    $this->load->view('startFooter'); 
} 

這是我的看法

<div class="login-form"> 
    <?php if($success==1){?> 
     <!-- BEGIN ERROR BOX --> 
     <div class="alert alert-danger"> 
      <button type="button" class="close" data-dismiss="alert">×</button> 
      <p><b>Success!</b></p> 
      Registration compleate!. 
     </div> 
     <!-- END ERROR BOX --> 
    <? } ?> 
</div> 

的樣品,你可以看到,當$這個 - >用戶> create_user($的數據);沒有返回錯誤

$data['success']=1; 
redirect(base_url().'users/success'); 

並在視圖中,如果成功== 1顯示成功框,我有statment。 但我不正確。我有這樣的用戶/成功頁面錯誤

Severity: Notice 

Message: Undefined variable: data 

Filename: controllers/users.php 

Line Number: 99 

Severity: Notice 

Message: Undefined variable: success 

Filename: views/success.php 

Line Number: 16 

我怎麼能這樣做正確嗎?

+1

您必須設置默認的錯誤值,因爲它只是定義,當你有錯誤 – insanebits

回答

1

查看成功頁面,如果成功,不要爲此做出方法。

redirect(base_url().'users/success'); 

=>

$this->load->view('startHeader'); 
$this->load->view('success',$data); 
$this->load->view('startFooter'); 

PS:使用$this->input->post('sth') insteado的$_POST['sth'] 和 笨建議通過bcrypt而不是MD5,SHA使用password_hash()或許,...

+0

由於它運作良好,我有問題,當我使用$。 ($ this-> input-> post())? –

+0

是的,以檢查請求是否發佈或者不使用'if($ this-> input-> post())'另一方面,你不必檢查每個post字段是否設置('isset($ this-> input-> ('sth'))'不再需要) – MaHDyfo

+0

_FYI您可以選擇幫助您作爲最佳答案的答案,方法是單擊左側的tik標誌 – MaHDyfo

0

$data['success']=0;array中設置索引,但該數組尚未定義;這就是爲什麼你會收到這些通知。無論是第一次創建(使用$data = array();;或結合起來,而是寫:

$data = array('success' => 0, 'error' => 0); 
相關問題