Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Suvišan model u MVC arhitekturi

[es] :: PHP :: Suvišan model u MVC arhitekturi

[ Pregleda: 1278 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BLACK_SWORD

Član broj: 212173
Poruke: 171
195.222.40.*

Sajt: www.artwebdizajn.com


+3 Profil

icon Suvišan model u MVC arhitekturi01.03.2012. u 11:58 - pre 147 meseci
Pozdrav!

Koristim CodeIgniter framework i nikako ne svaćam na koji način upotrijebiti model.
Po mojem razmišljanju u php-u je model sam po sebi suvišan jer je PHP slabo tipizirano jezik, pa su onda tu ubacili model gdje ćeš kao dohvatiti podatke, ali nema mi to baš nekog smisla.

E sad me zanima vaš način rada kako koristite model?

Dali kao objekat npr User_model
Code:

    function get_user($user_id, $data = '*')
    {
        $this->db->select($data);
        $this->db->where('user_id', $user_id);

        return $this->db->get('users')->row();
    }

    function add_user($data)
    {
        $this->db->insert('users', $data);

        return $this->db->insert_id();
    }

    function update_user($user_id, $data)
    {
        $this->db->where('user_id', $user_id);
        $this->db->update('users', $data);

        return TRUE;
    }


i sad sve uradim u controllers i prosljedim modelu.

ili radite na neki drugi način npr napravit login skriptu


controllers/user.php
Code:

class User extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model('User_model');
    }

    public function login()
    {
        // Korisnik ako je logovan a pokuša otvorit login stranicu preusmjeri ga na početnu stranicu
        if ($this->session->userdata('logged_in'))
        {
            redirect();
        }

        $this->load->library('form_validation');

        $this->form_validation->set_rules('username', 'Korisničko ime', 'trim|required');
        $this->form_validation->set_rules('password', 'Šifra', 'trim|required');

        if ($this->form_validation->run() == FALSE)
        {
            $data = array(
                'main_content' => 'user/login',
                'title' => 'Prijava',
                'description' => 'Stranica za prijavu (login)',
                'keywords' => 'login, prijava, korisnik',
                'nav' => 'login'
            );

            $this->load->view('template', $data);
        }
        else
        {
            // Provjera dali je banovan ip
            if ($this->User_model->banned_ip())
            {
                $this->session->set_flashdata('login_error', 'Vaša ip adresa je banovana.');
                redirect('user/login');
            }

            $username = $this->input->post('username');
            $password = $this->input->post('password');

            // Pravi random string koji ce se upisat u bazu korisnika pri svakom loginu
            $this->load->helper('string');
            $validation_code = random_string('alnum', 10);

            $data = $this->User_model->login($username, $password, $validation_code);

            if ( ! $data)
            {
                $this->session->set_flashdata('login_error', 'Pogrešni korisnički podaci.');
                redirect('user/login');
            }

            if ($data === 'is_banned')
            {
                $this->session->set_flashdata('login_error', 'Banovani ste.');
                redirect('user/login');
            }

            if($data === 'not_activated')
            {
                $this->session->set_flashdata('login_error', 'Niste aktivirali korisnički račun.');
                redirect('user/login');
            }

            $data = array(
                'logged_in' => TRUE,
                'user_id' => $data->user_id,
                'username' => $data->username,
                'status' => $data->status
            );

            $this->session->set_userdata($data);
            redirect();
        }
    }

}


models/user_model.php
Code:

class User_model extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }

    function login($username, $password, $validation_code)
    {
        $query = $this->db->query("SELECT `user_id`, `username`, `password`, `status`, `banned`, `activated` FROM `users` WHERE `username` = " . $this->db->escape($username) . " LIMIT 1");

        if ($query->num_rows() != 0)
        {
            $row = $query->row();

            if ($row->banned == 1)
            {
                return 'is_banned';
            }
            elseif ($row->activated == 0)
            {
                return 'not_activated';
            }
            elseif ($row->password == sha1($password))
            {
                $this->db->query("UPDATE `users` SET `last_login` = " . time() . ", `ip_address` = '" . $this->input->ip_address() . "', `validation_code` = '$validation_code' WHERE `user_id` = " . $row->user_id . " LIMIT 1");
                return $row;
            }
            return FALSE;
        }
        return FALSE;
    }


    // Provjerava dali je banovan ip
    function banned_ip()
    {
        $query = $this->db->query("SELECT `ip_address` FROM `ban_ip` WHERE `ip_address` = '" . $this->input->ip_address() . "' LIMIT 1");

        if ($query->num_rows() != 0)
        {
            return TRUE;
        }
        return FALSE;
    }

}


Znači controller koristim samo kao router (usmjerivač).

Dali je ovakav način rada dobar?


Hvala na odgovoru
 
Odgovor na temu

[es] :: PHP :: Suvišan model u MVC arhitekturi

[ Pregleda: 1278 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.