我正在尝试使用PHP
codeigniter实现用户注册,因为我为它创建了模型,视图和控制器。
我正面临一些小错误,即
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: errors
Filename: register_user.php
我在users.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 :(得分:1)
错误正在清除,为您提供错误信息的提示:
以下错误表示该变量根本不存在,并且未在任何位置设置。
通知消息:未定义的变量:errors文件名:register_user php
您正在做的是检查视图中的变量$errors
,但该变量不存在。为什么这个变量不存在? 。
因为您正在定义$data['errors']
,但您从未将其传递给视图:请查看您的行:
$this->load->view('register_user');
需要如下所示:
$this->load->view('register_user',$data);
并且即使变量不存在,你也可以通过在视图中使用isset()
来检查是否设置了变量,因此它需要在register_user.php
内部像这样:
<?php if(isset($errors)){ ?>
<div style="background:red; color:white;">
<?php echo $errors; ?>
</div>
<?php } ?>
还有一件事。在codeigniter内部考虑使用codeigniter的输入类:
$this->input->post('username'); // for $_POST
$this->input->get('username'); // for $_GET
$this->input->cookie('cookie_name');
$this->input->server();
而不是使用$_POST
,$_GET
正如codeigniter指南所述:
输入类有两个目的: