Пожалуйста, помогите мне ... Мой контроллер для регистрации и входа не работает. Всякий раз, когда я вводю данные либо в логин, либо в регистр, они возвращаются в режим регистрации и входа в систему, а не индекс / home и не вводимые мной данные вводятся в mysql.

Я создаю его так, как если мне удастся ввести данные в регистр, он будет направлен на вход в систему, затем, когда вы войдете, он будет направлен на дом. Другое - это вход в систему, когда я войду в систему, она будет направлена домой, если сможет войти.

Контроллер: Member.php

   class Member extends CI_Controller {

public function __construct()
{
    parent::__construct();
    $this->load->library(array('session', 'form_validation'));
    $this->load->helper(array('url', 'form'));
    $this->load->model("Member_model");
}

public function index() {
    $this->load->view('front/login');
}

public function Login() {
    $this->load->view('front/login');
}

public function Register() {
    $this->load->view('front/register');
}

public function profile() {

    if ($_SESSION['user_logged'] == FALSE) {

        $this->session->set_flashdata("error","Please login first to view");
        redirect('Member/Login');
    }
    $this->load->view('front/home');
}

}

Контроллер: Register.php

class Register extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->library(array('session', 'form_validation'));
        $this->load->helper(array('url', 'form'));
        $this->load->model("Member_model");
    }

    public function registerMember() {
        //validate  the data taken through the register form
        $this->form_validation->set_rules('username','Username','required|is_unique[member.username]');
        $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|md5|min_length[6]');
        $this->form_validation->set_rules('conf_password', 'Confirm Password', 'trim|required|min_length[6]|matches[password]');

        if ($this->form_validation->run() == TRUE) {

            //load the model to connect to the db
            $this->load->model('Member_model');
            $this->Member_model->insertMember();

            //set message to be shown when registration is completed
            $this->session->set_flashdata('success','You are registered!');
            redirect('Member/Login');

        } else {
            $this->load->view('front/register');
        }
    }
}

Контроллер: Login.php

class Login extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->library(array('session', 'form_validation'));
        $this->load->helper(array('url', 'form'));
        $this->load->model("Member_model");
    }

    public function loginMember() {

        $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('front/login');

        } else {

            $this->load->model('Member_model');
            $reslt = $this->Member_model->checkLogin();

            if ($reslt != false) {

                //set session
                $username = $_POST['username'];
                $password = sha1($_POST['password']);

                //fetch from databse
                $this->db->select('*');
                $this->db->from('member');
                $this->db->where(array('username' => $username , 'password' => $password));
                $query = $this->db->get();

                $member = $query->row();

                //if use exists
                if ($member->username) {

                    //login message
                    $this->session->set_flashdata("success","You are logged in");

                    //set session variables
                    $_SESSION['user_logged'] = TRUE;
                    $_SESSION['username'] = $member->username;

                    //redirect
                   redirect('Member/profile','refresh');
                }
            } else {

                //wrong credentials
                $this->session->set_flashdata('error','Username or Password invalid!');
                redirect('Member/Login');

            }
        }

    }

    //logging out of a user
    public function logoutMember() {
        unset($_SESSION);
        redirect('Member/Login');
    }
}

Модель: Member_model.php

class Member_model extends CI_Model {

public function insertMember () {

    //insert data
    $data = array(
        //assign data into array elements
        'username' => $this->input->post('username'),
        'email' =>$this->input->post('email'),
        'password' => sha1($this->input->post('password'))
    );
    //insert data to the database
    $this->db->insert('member',$data);
}

public function checkLogin() {

    //enter username and password
    $username = $this->input->post('username',TRUE);
    $password = sha1($this->input->post('password',TRUE));

    //fetch data from database
    $this->db->where('username',$username);
    $this->db->where('password',$password);
    $res = $this->db->get('member');

    //check if there's a user with the above inputs
    if ($res->num_rows() == 1) {

        //retrieve the details of the user
        return $res->result();

    } else {

        return false;

    }

}}

< Сильный > Вид: Register.php

<body class="background-login">
    <div class="main-w3layouts wrapper">
        <h1> SignUp </h1>
        <div class="main-agileinfo">
            <div class="agileits-top">
                <form method="post" action="<?php echo site_url('register/registerMember'); ?>" >                    

                    <input class="text" type="text" id="username" name="username" placeholder="Enter a username">

                    <input class="text email" type="email" id="email" name="email" placeholder="Enter your email">

                    <input class="text" type="password" id="password" name="password" placeholder="Enter a password">

                    <input class="text w3lpass" type="password" id="conf_password" name="conf_password" placeholder="Confirm your password">

                    <div class="wthree-text">
                        <label class="anim">
                            <input type="checkbox" class="checkbox" required="">
                            <span>I Agree To The Terms & Conditions</span>
                        </label>
                        <div class="clear"> </div>
                    </div>
                    <input type="submit" value="SignUp">
                </form>
                <p>Already have an Account? <a href="<?php echo site_url('Member/Login'); ?>"> Login Now!</a></p>
            </div>
        </div>

Login.php

 <body class="background-login">
    <div class="main-w3layouts wrapper">
        <h1> SignIn </h1>
        <div class="main-agileinfo">
            <div class="agileits-top">
                <form method="post" action="<?php echo site_url('Login/loginMember'); ?>" >                        
                    <input class="text" type="text" id="username" name="username" placeholder="Your username"><br>
                    <input class="text" type="password" id="password" name="password" placeholder="Your password">
                    <input type="submit" value="Login"/>
                </form>
                <p>Don't have an Account? <a href="<?php echo site_url('Member/Register'); ?>"> SignUp NOW!</a></p>
            </div>
        </div>

Я даже нарезаю свой код на части, как эта, но проблема все та же ... Как если бы запуск form_validation-> не выполнялся, а просто был обрезан до другого ...

Итак, проблема: Когда я ввожу данные, он не будет вводить данные или перенаправлять на другую страницу. * зарегистрироваться -> он направит регистрацию после того, как я отправлю данные Я хочу, чтобы данные были отправлены для входа в систему. * вход -> он будет направлен на вход после того, как я отправлю данные Я хочу, чтобы данные отправлялись домой. register -> результат ->  regis_result

0
Kuroda Ayumu 17 Окт 2018 в 09:06

4 ответа

Перенаправить вашу страницу:

//login

 if ($this->form_validation->run() === TRUE)
        { 
            $username = $this->input->post('username');
            $email    = $this->input->post('email');
            $password = $this->input->post('password');

           $user= $this->member_model->create_user();
if($user >0){
redirect('front/home'); 
        } else { 
           redirect('front/login'); 
        }
}

Вы можете так же, как при регистрации

0
PHP Geek 23 Окт 2018 в 11:05

Убедитесь, что ваш base_url в config.php не нулевой.

В register.php удалите <?=form_open('member/login')?> и <?= form_close() ?>

Вместо этого добавьте <form method="post" action="<?php echo site_url('Member/register'); ?>" > а также </form>

0
shavindip 23 Окт 2018 в 06:42

В вашем реестре и логин вид

                <?= form_open() ?>
                <form action="#" method="post"> 

Вы добавили это. Это неправильно. В то же время, когда вы открываете две формы, вам нужно удалить строку. И добавить какое-то действие, например, в форму.

<form action="<?= base_url('yourControllerName/YourMethodname')?>" method='post'></form>

И второе, в Member.php Controller вы добавили эту строку

    if ($this->form_validation->run() === FALSE){
        Some code
    }

Это неправильно, вам нужно это

        if ($this->form_validation->run() == FALSE)

Пожалуйста, проверьте и пингуйте меня ......

0
atta afridi 17 Окт 2018 в 08:55

Вы не можете использовать функцию form_open и HTML-тег формы одновременно, поэтому удалите кого-либо из него и пройдите весь путь в действии.

Если вы используете функцию form_open, пожалуйста, добавьте функцию form_close.

0
Dolar 17 Окт 2018 в 07:06