2015-07-11 193 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); 
相关问题