Php 从URL Codeigniter验证表单隐藏控制器
我在尝试创建一个简单的登录系统时遇到了一个问题。这就是它的工作原理,说明了我的问题所在 登录页面包含一个简单的表单,并向控制器“验证登录”打开一个表单。此验证登录控制器执行一些基本表单验证,然后查询数据库以检查用户输入的凭据是否正确。提交此表单时,它会自动将用户定向到website.com/verify_login,而我希望它保持为website.com/login。我无法使用routes文件解决此问题,因为这会导致两个页面都重定向到同一页面。有人能解决这个问题吗?我正在使用Codeigniter框架 login.phpPhp 从URL Codeigniter验证表单隐藏控制器,php,codeigniter,Php,Codeigniter,我在尝试创建一个简单的登录系统时遇到了一个问题。这就是它的工作原理,说明了我的问题所在 登录页面包含一个简单的表单,并向控制器“验证登录”打开一个表单。此验证登录控制器执行一些基本表单验证,然后查询数据库以检查用户输入的凭据是否正确。提交此表单时,它会自动将用户定向到website.com/verify_login,而我希望它保持为website.com/login。我无法使用routes文件解决此问题,因为这会导致两个页面都重定向到同一页面。有人能解决这个问题吗?我正在使用Codeignite
<div class="content-block">
<h1>Login</h1>
<div class="content-inner-block">
<?php echo validation_errors(); ?>
<?php echo form_open('Verify_login'); ?>
<div class="login wrap">
<input type="text" name="username" id="user" placeholder="Username">
<input type="password" name="password" id="pass" placeholder="**********">
<input type="submit" value="Log in">
</div>
<?php echo form_close("\n")?>
</div>
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Verify_login extends CI_Controller{
public function index(){
$this->load->model('User_model');
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() == FALSE){
$this->load->view('pages/login');
return false;
}
$result = $this->User_model->login($this->input->post('username'), $this->input->post('password'));
if($result){
echo 'loggedin';
} else {
echo 'wrong';
}
}
}
?>
登录
验证\u login.php
<div class="content-block">
<h1>Login</h1>
<div class="content-inner-block">
<?php echo validation_errors(); ?>
<?php echo form_open('Verify_login'); ?>
<div class="login wrap">
<input type="text" name="username" id="user" placeholder="Username">
<input type="password" name="password" id="pass" placeholder="**********">
<input type="submit" value="Log in">
</div>
<?php echo form_close("\n")?>
</div>
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Verify_login extends CI_Controller{
public function index(){
$this->load->model('User_model');
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() == FALSE){
$this->load->view('pages/login');
return false;
}
$result = $this->User_model->login($this->input->post('username'), $this->input->post('password'));
if($result){
echo 'loggedin';
} else {
echo 'wrong';
}
}
}
?>
为什么不使用$.ajax
提交表单?或者让login
控制器调用私有方法进行验证?@Kisaragi因此,如果我将verify\u login public函数更改为private,它将解决问题?不,这不会解决您的问题。您的表单正在发布到验证\u登录
。要么更改它(post tologin
并从login调用私有方法进行验证),要么使用ajax post toverify\u login
@Kisaragi,那么您是说我应该将表单发布到它自己,并从该视图文件调用私有方法?我认为这是违反MVC原则的。不。您是否有login.php
控制器?为什么不使用$.ajax
提交表单?或者让login
控制器调用私有方法进行验证?@Kisaragi因此,如果我将verify\u login public函数更改为private,它将解决问题?不,这不会解决您的问题。您的表单正在发布到验证\u登录
。要么更改它(post tologin
并从login调用私有方法进行验证),要么使用ajax post toverify\u login
@Kisaragi,那么您是说我应该将表单发布到它自己,并从该视图文件调用私有方法?我认为这是违反MVC原则的。不。你有login.php
控制器吗?