登录使用CodeIgniter框架后重定向到另一个页面


Redirecting to another page after logging in Using CodeIgniter framework

我创建了一个登录控制器,当我重定向到网站主页时,它不会重定向到我的视图,也就是索引。

这是我的控制器(main.php):

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Main extends CI_Controller {
public function __construct()
     {
       parent::__construct();
     }
public function index()
{
    $this->load->view('login');
}
public function validate_credentials () {
            $this->load->model("membership_model");
            $query = $this->membership_model->validate();
            if($query){
                $data = array(
                    'username' => $this->input->post('username'),
                    'is_logged_in' => true
                );
                $this->session->set_userdata($data);
                redirect('Main/homepage1', 'refresh');
            }
            else {
                $this->index();
            }
        }
    public function homepage1 () {
        $this->load->view("index");
    }

  }

这是我在login_view.php 中的表格

<form class="form-login" method="post" name="redirect" action="<?php echo site_url("Main/validate_credentials"); ?>">
            <h2 class="form-login-heading">sign in now</h2>
            <div class="login-wrap">
                <input type="text" class="form-control" placeholder="User ID" autofocus value="<?php echo set_value('username'); ?>" >
                <br>
                <input type="password" class="form-control" placeholder="Password"  value = "<?php echo set_value('password'); ?>">
                <label class="checkbox">
                    <span class="pull-right">
                        <a data-toggle="modal" href="login.php#myModal"> Forgot Password?</a>
                    </span>
                </label>
                <button class="btn btn-theme btn-block" name="login" href="index.html" type="submit"><i class="fa fa-lock"></i> SIGN IN</button>
             </div>
             <?php  $this->load->view("modals/forgot_pass_modal"); ?>
          </form>

和我的型号:

<?php if( ! defined ('BASEPATH')) exit ('No direct script access allowed');
class Membership_model extends CI_Model{
    public function __construct()
     {
       parent::__construct();
     }
    public function validate () {
        $this->db->where('admin_username', $this->input->post('username'));
        $this->db->where("admin_pword", md5($this->input->post("password")));
        $query = $this->db->get("administration");
        if($query->num_rows() == 1){
            return true;
        }
    }

}
 ?>

有人能帮我吗?因为这是我第一次使用这个PHP框架,如果你能帮我,我真的很感激。

表单中缺少名称属性。

<input name="username" type="text" class="form-control" placeholder="User ID" autofocus value="<?php echo set_value('username'); ?>" >
       ^             ^
<input name="password" type="password" class="form-control" placeholder="Password"  value = "<?php echo set_value('password'); ?>">
       ^             ^

在没有指定名称的情况下,您试图访问型号

通过更改代码应该可以工作。我想休息一下,一切都很好。

试试这个

在视图中

<input name="username" type="text" class="form-control" placeholder="User ID" autofocus value="<?php echo set_value('username'); ?>" >
<br>
<input name="password" type="password" class="form-control" placeholder="Password"  value = "<?php echo set_value('password'); ?>">

在控制器中

public function validate_credentials () {
    $this->load->model("membership_model");
    $query = $this->membership_model->validate();
    if($query == 1){
        $data = array(
            'username' => $this->input->post('username'),
            'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        redirect('Main/homepage1');
    }
    else {
        $this->index();
    }
}

在模型中

public function validate () {
    $this->db->where('admin_username', $this->input->post('username'));
    $this->db->where("admin_pword", md5($this->input->post("password")));
    $query = $this->db->get("administration");
    $result = $query->result_array();
    $count = count($result);
    return $count;
}

您忘记在login_view.php 上添加表单attributes

将您的view code替换为。。。

<form class="form-login" method="post" name="redirect" action="<?php echo site_url("main/validate_credentials"); ?>">
        <h2 class="form-login-heading">sign in now</h2>
        <div class="login-wrap">
            <input name="username" type="text" class="form-control" placeholder="User ID" autofocus value="<?php echo set_value('username'); ?>" >
            <br>
            <input name="password" type="password" class="form-control" placeholder="Password"  value = "<?php echo set_value('password'); ?>">
            <label class="checkbox">
                <span class="pull-right">
                    <a data-toggle="modal" href="login.php#myModal"> Forgot Password?</a>
                </span>
            </label>
            <button class="btn btn-theme btn-block" name="login" type="submit"><i class="fa fa-lock"></i> SIGN IN</button>
         </div>
         <?php  $this->load->view("modals/forgot_pass_modal"); ?>
 </form>

并用此替换型号

 <?php if( ! defined ('BASEPATH')) exit ('No direct script access allowed');
            class Membership_model extends CI_Model{
                public function __construct()
                 {
                   parent::__construct();
                 }
                public function validate () {
                    $this->db->select('admin_username');
                    $this->db->where('admin_username', $this->input->post('username'));
                    $this->db->where("admin_pword", md5($this->input->post("password")));
                    $query = $this->db->get("administration");
                    return $query->row();
                }

            }
        ?>

控制器

用此代码替换validate_credentials方法

 public function validate_credentials () {
            $this->load->model("membership_model");
            $query = $this->membership_model->validate();
            if($query->admin_username){
                $data = array(
                    'username' => $this->input->post('username'),
                    'is_logged_in' => true
                );
                $this->session->set_userdata($data);
                redirect(base_url().'main/homepage1');
            }
            else {
                $this->index();
            }
        }

由于您的问题只是重定向,请按照以下进行操作

redirect('Main/homepage1', 'refresh');

作为

$url = site_url('main/homepage1');
 redirect($url);

当你重定向到新链接时,你不需要刷新它。希望它能帮助