我是codeigniter
的新用户,我无法弄清楚为什么form_validation
继续返回false。这是我的代码:
登录控制器
class Login extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper(array('form','url'));
$this->load->library('form_validation');
$this->load->library('session');
$this->load->model('user','',TRUE);
}
function index()
{
$this->load->view('login_view');
}
function user_registration_show(){
$this->load->view('registration_view');
}
function user_login_process(){
}
function user_registration_process(){
$this->form_validation->set_rules('fname', 'First Name', 'trim|required|xss_clean');
$this->form_validation->set_rules('lname', 'Last Name', 'trim|required|xss_clean');
$this->form_validation->set_rules('gender', 'Gender', 'trim|required|xss_clean');
$this->form_validation->set_rules('address', 'Address', 'trim|required|xss_clean');
$this->form_validation->set_rules('emailadd', 'Email Address', 'trim|required|xss_clean');
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');
$this->form_validation->set_rules('password1', 'Re-type Password', 'trim|required|xss_clean');
if ($this->form_validation->run() == FALSE) {
$this->load->view('registration_view');
} else {
$pass = $this->input->post('password');
$pass1 = $this->input->post('password1');
if($pass!=$pass1){
$data['message_display'] = 'Password mismatched!';
}else{
$data = array(
'Fname' => $this->input->post('Fname'),
'Lname' => $this->input->post('Lname'),
'Gender' => $this->input->post('Gender'),
'Address' => $this->input->post('Address'),
'EmailAdd' => $this->input->post('EmailAdd'),
'username' => $this->input->post('username'),
'password' => $this->input->post('password')
);
}
}
}
}
registration_view
<?php echo form_open('login/user_registration_process'); ?>
<div class="content-box-wrapper">
<div class="form-group">
<div class="input-group">
<input type="text" class="form-control" name="fname" placeholder="First Name" >
</div>
</div>
<div class="form-group">
<div class="input-group">
<input type="text" class="form-control" name="lname" placeholder="Last Name" >
</div>
</div>
<div class="form-group">
<div class="input-group">
<select class="form-control" name="gender" >
<option disabled="disabled">Gender</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</div>
</div>
<div class="form-group">
<div class="input-group">
<input type="text" class="form-control" name="address" placeholder="Address">
</div>
</div>
<div class="form-group">
<div class="input-group">
<input type="email" class="form-control" name="emailadd" placeholder="Email Address" >
</div>
</div>
<div class="form-group">
<div class="input-group">
<input type="text" class="form-control" name="username" placeholder="Username" >
</div>
</div>
<div class="form-group">
<div class="input-group">
<input type="password" class="form-control" name="password" placeholder="Password" >
</div>
</div>
<div class="form-group">
<div class="input-group">
<input type="password" class="form-control" name="password1" placeholder="Re-type Password" >
</div>
</div>
<input type="submit" class="btn btn-blue-alt btn-block" value="Register"/>
</div>
<?php echo form_close(); ?>
我正在使用codeigniter 3.1.3。任何人都可以帮助我吗?
答案 0 :(得分:4)
由于在所有字段中使用xss clean check,您的表单验证失败。如果你删除它验证你的字段。由于你的数据已经xss清理(假设配置中global_xss_filtering为TRUE)
答案 1 :(得分:0)
我认为在使用<div class="col-md-10">
<div class="version-tabs">
<tabset>
<tab ng-repeat="data in dataDict.versions" heading="{{data}}"
active="dataDict.versionSelection[data].active">
<div class="pad-top-sm">
<pre class="response-textarea-tab pad-top-sm">{{formatJson(dataDict.versionSelection[data].json) | json}}</pre>
</div>
</tab>
</tabset>
</div>
</div>
获取值时,字段名称不匹配。请尝试这样..
$this->input->post()
答案 2 :(得分:0)
请检查控制器中的所有错误。这将返回错误原因。
<?php echo validation_errors(); ?>
OR
echo "<pre>";
print_r($this->form_validation->get_all_errors());
echo "</pre>";
这将在控制器中返回所有表单错误,您可以轻松处理您的请求。
答案 3 :(得分:0)
在先生@GauravRai的帮助和先生@Hek-mat先生的建议下,这是我的代码。
登录控制器
function __construct()
{
parent::__construct();
$this->load->helper(array('url','form'));
$this->load->library('form_validation');
$this->load->library('session');
$this->load->helper('security');
$this->load->model('user');
}
function index()
{
$this->load->view('login_view');
}
function user_registration_show(){
$this->load->view('registration_view');
}
function user_registration_process(){
$this->form_validation->set_rules('fname', 'First Name', 'required|xss_clean');
$this->form_validation->set_rules('lname', 'Last Name', 'required|xss_clean');
$this->form_validation->set_rules('gender', 'Gender', 'required|xss_clean');
$this->form_validation->set_rules('address', 'Address', 'required|xss_clean');
$this->form_validation->set_rules('emailadd', 'Email Address', 'required|xss_clean');
$this->form_validation->set_rules('username', 'Username', 'required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'required|xss_clean');
$this->form_validation->set_rules('password1', 'Re-type Password', 'required|xss_clean|matches[password]');
if ($this->form_validation->run() == FALSE) {
$this->load->view('registration_view');
} else {
$data = array(
'Fname' => $this->input->post('fname'),
'Lname' => $this->input->post('lname'),
'Gender' => $this->input->post('gender'),
'Address' => $this->input->post('address'),
'EmailAdd' => $this->input->post('emailadd'),
'username' => $this->input->post('username'),
'password' => MD5($this->input->post('password'))
);
$result = $this->user->registration_insert($data);
if($result){
$data['message_display'] = 'Registered Successfully! Please Login to your account.';
$this->load->view('login_view', $data);
}else{
$data['message_display'] = 'Username already exist!';
$this->load->view('registration_view', $data);
}
}
}
我添加了$this->load->helper('security');
,以便xss_clean
验证我的表单。我还添加了matches[password]
验证,以匹配我的password
字段和Re-type Password
字段。感谢大家帮助我解决这个问题:)