我是php的新手。我的设置是在ubuntu 14.04 LTS上点亮。
我已经在在线教程的帮助下创建了一个Login系统。
我已经在autoload.php
文件中进行了更改
$autoload['libraries'] = array('database', 'form_validation');
$autoload['helper'] = array('url', 'form');
出乎意料的是,如果用户名和密码字段都为空,并且按下了“登录”按钮,则会显示否错误(“用户名字段为空”...)。 此外,在Mozilla Firefox中,按下按钮时页面保持不变 在Google Chrome中,页面加载到about:blank。
如果我在问题格式中犯了错误,请帮助和抱歉。
我的控制器:LoginController.php
<?php
class LoginController extends CI_Controller{
public function index(){
$this->load->view('login');
}
public function checkLogin(){
$this->load->library('form_validation');
$this->form_validation->set_rules('username' , 'Username' , 'required|valid_email');
$this->form_validation->set_rules('password' , 'Password' , 'required|callback_verifyUser');
if($this->form_validation->run() == false){
$this->load->view('login');
}else{
redirect('HomeController/index');
}
}
public function verifyUser(){
$name = $this->input->post('username');
$pass = $this->input->post('password');
$this->load->model('LoginModel');
if($this->LoginModel->login($name, $pass)){
return true;
}
else{
$this->form_validation->set_message('verifyUser', 'Incorrect email or password. Please try again.');
return false;
}
}
}
我的观看文件:login.php
<!DOCTYPE HTML>
<html>
<head>
<title>CI Login System</title>
</head>
<body>
<h1>Login</h1>
<?php echo validation_errors(); ?>
<?php echo form_open('LoginController/checkLogin'); ?>
Username<br/>
<input type="text", name="username"/><br/>
Password<br/>
<input type="text", name="passsword"/><br/>
<input type="submit", value="Login", name="submit"/>
</form>
</body>
</html>
答案 0 :(得分:1)
您的错误在HTML代码中。
Username<br/>
<input type="text", name="username"/><br/>
Password<br/>
<input type="text", name="passsword"/><br/>
<input type="submit", value="Login", name="submit"/>
这是错误的:
您的密码输入名称有误,它有一个额外的s
,不应该考虑这条线:
$pass = $this->input->post('password');
测试一下:
<input type="text" placeholder = "Username" name="username" required/><br>
<input type="password" placeholder = "Password" name="password" required/><br>
<input type="submit" value="Login" name="submit"/>
我已编辑了我的答案以插入required
属性。
但兼容性并不像它应该的那么大:
您还可以使用Javascript form validation方法
答案 1 :(得分:1)
不,它永远不会奏效。你是 onflicting Normal <form>
和Codeigniter form Code
表单代码应该是
echo form_open('LoginController/checkLogin');
$userName = array(
'name' => 'username',
'id' => 'username'
);
$password = array(
'name' => 'password',
'id' => 'password'
);
echo "<label>Username</label>";
echo form_input($userName);
echo "<label>Password</label>";
echo form_password($password);
echo form_submit('mysubmit', 'Login');
echo form_close();