我使用以下代码在html视图部分中显示登录表单
<form action="/TestApp/index.php/my_controller/validate" method="POST" method="GET">
Username: <input name="name" type="text"><br />
Password: <input name="word" type="password"><br />
<label name = "error"></label><br />
<input type="submit" value="Login">
</form>
在控制器内部,我验证用户名和密码。以下几行代码帮助我将文本框值输入控制器。
$uName = $_POST['uname'];
$pWord = $_POST['pword'];
我需要从控制器分配/设置字符串值来标记错误。
我该怎么做?请帮帮我。
控制器
class My_controller extends CI_Controller {
public function login()
{
$this->load->view('login_view');
}
public function validate()
{
$this->load->model('login');
if((isset($_POST['name'])) && (isset($_POST['word'])) && !empty($_POST['name']) && !empty($_POST['word']))
{
$uName = $_POST['name'];
$pWord = $_POST['word'];
if($this->model_users->checkUser($uName) == 1) {
if($this->model_users->checkPassword($uName) == $pWord) {
echo 'Loggedin!';
$this->session->set_userdata('login_state', TRUE);
} else {
// Incorrect password;
redirect( '/' );
$error = "Incorrect password!";
}
} else {
// Username does not exist;
redirect( '/' );
$error = "Username does not exist!";
}
} else {
// Username or Password field is empty;
redirect( '/' );
$error = "Username or Password field is empty!";
}
}
}
操作应该是
action="<?php echo base_url() ?>my_controller/validate"
在
autoload.php
中加载url助手以及
一种正在验证的方法
$uName = $_POST['name']; # not uname
$pWord = $_POST['word']; # not uname
传递日期以查看
在控制器中
$data['error'] = "My Message here";
在视图中
if (!empty($error)) {
?>
<label name ="error"></label>
<?php
}
else{
}
带有验证的控制器部件代码
<?php
class Form extends CI_Controller {
function index()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'name', 'required');
$this->form_validation->set_rules('password', 'word', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myform');
}
else
{
$this->load->view('formsuccess');
}
}
}
?>
试试这个
视图内
<?php echo form_open('my_controller/validate', ['method'=>'post']) ?>
控制器内部
$uName = $this->input->post['name'];
$pWord = $this->input->post['word'];
纠正此问题,
控制器内
$uName = $this->input->post('name');
$pWord = $this->input->post('word');
if($uName == "" || $pWord == ""){// change the conditions if required.
$error = 1;
} else {
$error = 0;
}
$data['error'] = $error;
$this->load->view("view_name",$data);
可视
if($error) {
echo "<label>Error has occurred</label>";// change error if required.
}
如果您正在尝试重定向,请使用flashdata()
。在控制器中。
$this->session->set_flashdata("error","error message here");
可视
if($this->session->flashdata("error"){
// echo label here
}