我正在学习如何使用Codeigniter创建登录系统的教程。
我在视图中创建了以下表单:
<!DOCTYPE html>
<html lang="en">
<body>
<div class="container">
<h1>Login</h1>
<?php
echo form_open('welcome/login_validation');
echo validation_errors();
echo form_label('Email: ');
echo form_input('email'); //form_input(name,value)
echo '<br />';
echo form_label('Password: ');
echo form_password('password');
echo '<br />';
echo form_submit('login_submit', 'Login'); //form_submit(name,value)
echo form_close();
?>
</div>
</body>
</html>
但是当我点击谷歌浏览器上的提交按钮时,它会在地址栏中打开一个空白页,其中包含“about:blank”。
在FireFox中,它具有正确的地址“... welcome / form_validation”,但会提供以下消息:
“此地址受到限制 此地址使用网络端口,该端口通常用于Web浏览以外的目的。 Firefox取消了保护请求。“
在Microsoft Edge上,它只是停留在包含表单的页面上。
这是我的控制器:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
/**
* Index Page for this controller.
*
* Maps to the following URL
* http://example.com/index.php/welcome
* - or -
* http://example.com/index.php/welcome/index
* - or -
* Since this controller is set as the default controller in
* config/routes.php, it's displayed at http://example.com/
*
* So any other public methods not prefixed with an underscore will
* map to /index.php/welcome/<method_name>
* @see http://codeigniter.com/user_guide/general/urls.html
*/
public function index()
{
$this->login();
}
public function login()
{
$this->load->view('login');
}
public function login_validation()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'Email', 'required');
$this->form_validation->set_rules('password', 'Password', 'required|md5');
if($this->form_validation->run()){
redirect('main/members');
} else{
$this->load->view('login');
}
}
public function members()
{
$this->load->view('users');
}
}
感谢任何帮助。如果您需要更多信息,请告诉我,我会发布。
由于
编辑:我正在使用codeigniter 3.0.3
答案 0 :(得分:1)
表单打开是指Welcome
控制器中将处理登录表单的方法。
在您看来,它是echo form_open('welcome/form_validation');
但是
在您的控制器中,它是public function login_validation()
更改视图form_open
操作或Controller's
方法名称