【发布时间】:2016-06-12 13:41:46
【问题描述】:
我正在构建我的第一个 codeigniter 应用程序并试图弄清楚如何实现基本的身份验证功能。以下是我的登录视图:
<div><?php echo validation_errors(); ?></div>
<?php echo form_open('admin/index', ['role' => 'form']); ?>
<fieldset>
<legend><i class="fa fa-lock"></i> Secure Sign-In</legend>
<div class="form-group">
<label for="username">Username</label>
<?php echo form_input(['name' => 'username', 'id' => 'username', 'class' => 'form-control', 'value' => '']); ?>
</div>
<div class="form-group">
<label for="password">Password</label>
<?php echo form_password(['name' => 'password', 'id' => 'password', 'class' => 'form-control']) ?>
<div class="checkbox">
<label>
<?php echo form_checkbox(['name' => 'remember_me', 'value' => 'Remember Me']) ?> Remember Me
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">
<i class="fa fa-sign-in"></i> Sign In
</button>
<a class="btn btn-link" href="">Forgot Your Password?</a>
</fieldset>
<?php echo form_close(); ?>
管理控制器如下:
defined('BASEPATH') OR exit('No direct script access allowed');
class Admin extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('templates/header');
$this->load->view('auth/login_view');
$this->load->view('templates/footer');
$this->load->helper('url','form');
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'UserName', 'required');
$this->form_validation->set_rules('password', 'Password', 'required|min_length[4]');
}
}
当我提交空表单(在用户名和密码输入字段中没有输入)时,理想情况下它应该执行验证并在登录视图上显示错误,但事实并非如此。它什么也没显示。
另外,当我在 chrome 中打开登录视图页面源时,我注意到表单操作值看起来有点不同。它具有以下价值:
<form action="http://[::1]/meshi/index.php/admin/index" role="form" method="post" accept-charset="utf-8">
我不确定 [::1] 在表单操作中的含义。另外,我没有在配置文件中指定基本 url 值。
【问题讨论】:
-
在 Codeigniter3 中
base_url设置在 config.php 中是强制性的。设置后,您将在表单操作中看到真正的 url 而不是 [::1]
标签: php forms codeigniter