brunojds 0 Denunciar post Postado Agosto 19, 2012 eu tenho um sistema em CodeIgniter: Areá de login > Index (Menu: cadastro de usuário, listar usuário, cadastro de produto, listar produtos). O que eu quero fazer é logar com os usuários que cadastro, que são armazenados no banco de dados, sendo os usuarios divididos em 2 níveis os administradores e os comuns. ondeo os comuns não podem, cadastrar usuário. ===Banco de Dados loja_virtual == Estrutura da tabela usuario user_id int(11) user_login varchar(10) user_senha varchar(32) user_admin tinyint(1) user_nome varchar(100) user_cidade varchar(50) user_estado varchar(50) por enquanto meu aquivo login.php esta assim: <?php class Login extends CI_Controller { function __construct() { parent::__construct(); } public function index() { if($this->input->post('usuario') && $this->input->post('senha')) { $login_banco = "teste2"; $senha_banco = md5(123456); $usuario = $this->input->post('usuario'); $senha = md5($this->input->post('senha')); if(($usuario === $login_banco) && ($senha === $senha_banco)) redirect('admin/painel'); else $this->load->view('layouts/admin.login.php',array('error' => 'erro')); } else { $this->load->view('layouts/admin.login.php'); } } } nesse codigo abaixo tem o campo "Inserir Usuário" onde ele deve ser visivel apenas para administradores admin.painel.php <!-- MENU --> <div id="menu" class="left"> <ul> <li> <h1><a href="<?=site_url('admin/painel')?>">Index</a></h1> </li> <li> <ul> <li><a href="<?=site_url('admin/user/insert')?>">Inserir Usuário</a></li> <li><a href="<?=site_url('admin/user/manage')?>">Lista de Usuários</a></li> </ul> </li> <li> <ul> <li><a href="<?=site_url('admin/produto/insert')?>">Inserir Produto</a></li> <li><a href="<?=site_url('admin/produto/manage')?>">Lista de Produtos </a></li> </ul> </li> <li> <ul> <li><a href="<?=site_url('application/controllers/admin/logout.php')?>">Sair</a></li> </ul> </div> Sou iniciante no php quem poder dar uma foça dês de já agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
ronal-gato 15 Denunciar post Postado Agosto 19, 2012 Crie mais um campo com o nome de user_nivel varchar(100) E depois somente ir fazendo regras de if e else Compartilhar este post Link para o post Compartilhar em outros sites
brunojds 0 Denunciar post Postado Agosto 19, 2012 Crie mais um campo com o nome de user_nivel varchar(100) E depois somente ir fazendo regras de if e else ja tenho criado no formulário o campo em radio (1) para administrador e (0) para user comun criando no banco de dados o user_admin Compartilhar este post Link para o post Compartilhar em outros sites
ronal-gato 15 Denunciar post Postado Agosto 19, 2012 Um mais como você ira fazer esse sistema de gerenciamento de conteudo você ira colocar um sub dominio para isso? exemplo seu site www.meusite.com.br ai com o sub dominio criado ficaria www.adm.meusite.com.br Se sim somente fazer um sistema de login fazendo um if para verificar o nivel se ele tiver nivel 1 ele longa como adm caso o contrario exibe uma mensagem Compartilhar este post Link para o post Compartilhar em outros sites
brunojds 0 Denunciar post Postado Agosto 19, 2012 Um mais como você ira fazer esse sistema de gerenciamento de conteudo você ira colocar um sub dominio para isso? exemplo seu site www.meusite.com.br ai com o sub dominio criado ficaria www.adm.meusite.com.br Se sim somente fazer um sistema de login fazendo um if para verificar o nivel se ele tiver nivel 1 ele longa como adm caso o contrario exibe uma mensagem sem sub domínio acho que é melhor, mas como eu puxo o "user_login", "user_senha" do banco de dados e comparo com o digitado no campo login Compartilhar este post Link para o post Compartilhar em outros sites
ronal-gato 15 Denunciar post Postado Agosto 19, 2012 No seu caso eu acharia melhor a criação de um sub dominio protegido por login e criar outra coluna assim user_admin varchar(10) user_senha_adm varchar(10) Te daria menos trabalho pelo menos pelo meu ponto de vista Compartilhar este post Link para o post Compartilhar em outros sites
brunojds 0 Denunciar post Postado Agosto 19, 2012 No seu caso eu acharia melhor a criação de um sub dominio protegido por login e criar outra coluna assim user_admin varchar(10) user_senha_adm varchar(10) Te daria menos trabalho pelo menos pelo meu ponto de vista eu não estou compreendendo sessa ideá de sub domínio direito deixar isso pra depois vamos só fazer o sistema funcionar, como eu resgato os valores do banco de dados. Compartilhar este post Link para o post Compartilhar em outros sites
ronal-gato 15 Denunciar post Postado Agosto 20, 2012 eu não estou compreendendo sessa ideá de sub domínio direito deixar isso pra depois vamos só fazer o sistema funcionar, como eu resgato os valores do banco de dados. Hum sistema de login no sistema usando o banco de dados você fala certo ? Mais esse login servira para o adm e usuario ? ou somente para um dos dois? Compartilhar este post Link para o post Compartilhar em outros sites
brunojds 0 Denunciar post Postado Agosto 20, 2012 Hum sistema de login no sistema usando o banco de dados você fala certo ? Mais esse login servira para o adm e usuario ? ou somente para um dos dois? Por enquanto eu estou definindo o login e senha como: $login_banco = "teste2"; $senha_banco = md5(123456); Mais eu possuo usuários cadastrados eu quero pegar esse "user_login", "user_senha" e comparar com o que e digitado no formulário, mais eu nunca trabalhei com banco de dados e estou fazendo um exercício pra ver se eu aprendo, e travei nessa parte. Compartilhar este post Link para o post Compartilhar em outros sites
CarlosMarx 4 Denunciar post Postado Agosto 20, 2012 Bom, seguinte, pelo que pude entender, você não está nem conseguindo recuperar os dados do BD é isso? Vejamos, posso esclarecer para você da seguinte forma: Seu controller Login - Tem uma função [function] index que vai comparar os dados com os dados que vem do BD,$login_banco e $senha_banco deveriam vir do BD. Você vai precisar criar um Model para recuperar esses dados. Recomendo que você leia a página do Manual do Codeigniter sobre "Models", creio que irá ser bastante esclarecedor. Se ainda assim não conseguir aí tentarei facilitar mais. Dá uma olhada aqui: Manual Codeigniter->Models Compartilhar este post Link para o post Compartilhar em outros sites
brunojds 0 Denunciar post Postado Agosto 20, 2012 Bom, seguinte, pelo que pude entender, você não está nem conseguindo recuperar os dados do BD é isso? Vejamos, posso esclarecer para você da seguinte forma: Seu controller Login - Tem uma função [function] index que vai comparar os dados com os dados que vem do BD,$login_banco e $senha_banco deveriam vir do BD. Você vai precisar criar um Model para recuperar esses dados. Recomendo que você leia a página do Manual do Codeigniter sobre "Models", creio que irá ser bastante esclarecedor. Se ainda assim não conseguir aí tentarei facilitar mais. Dá uma olhada aqui: Manual Codeigniter->Models consegui vlw você me ajudo pra caramba fico assim fiz um login_model.php <?php class Login_model extends CI_Model{ function ValidaLogin() { $this->db->where('user_login', $this->input->post('usuario')); $this->db->where('user_senha', md5($this->input->post('senha'))); $query = $this->db->get('usuario'); if($query->num_rows == 1) { return true; } } } ?> e meu login.php fico class Login extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('admin/usermodel'); } public function index() { $this->load->model('login_model');//Carrega o model $query = $this->login_model->ValidaLogin();//Chama a função da Model que checa o usuário no BD if($query) //Se o Usuário e senha existir no mesmo registro... { $data = array( 'login' => $this->input->post('usuario'), 'is_logged_in' => true ); $this->session->set_userdata($data); redirect('admin/painel'); }else // incorrect username or password { $this->load->view('layouts/admin.login.php'); } } } Compartilhar este post Link para o post Compartilhar em outros sites
CarlosMarx 4 Denunciar post Postado Agosto 22, 2012 Falei que ia ser esclarecedor. O manual do Codeigniter é muito bom. Sempre que tiver dúvidas dá uma olhada lá primeiro. Compartilhar este post Link para o post Compartilhar em outros sites
brunojds 0 Denunciar post Postado Agosto 26, 2012 Estou precisando de mais uma ajuda, estou montando uma lista de usuários onde quem for um "user comum" só pode editar o próprio perfil. Eu tenho esse código onde listo os seguintes items da tabela 'usuario'('user_nome, user_login, user_cidade, user_admin' e user_id). Só que gostaria que fosse listado apenas o user_id de quem fez login public function getUsers() { $this->db->select('user_nome, user_login, user_cidade, user_admin'); $this->db->select('user_id'); $query = $this->db->get_where('usuario'); if($query->num_rows() == 0) return 0; else return $query->result(); } Campo onde faz mostrar a lista: <a href="<?=site_url('usuario/user/edit/'.$r->user_id)?>" class="none"><img src="<?=base_url()?>assets/img/icons/page_edit.png" alt="Editar Usuário" title="Editar Usuário" width="16" height="16" /></a> Compartilhar este post Link para o post Compartilhar em outros sites
CarlosMarx 4 Denunciar post Postado Agosto 26, 2012 Bom, você tem que passar um ID para realizar a consulta e retornar os dados referentes ao ID do usuario que você quer: public function getUser() { $this->db->select('user_nome, user_login, user_cidade, user_admin'); $query = $this->db->get_where('usuario', array('id'=> $id)); if($query->num_rows() == 0) return 0; else return $query->result(); } Lembrando que alterei o nome da função para o singular (getUser) porque com essa função você retornará somente 1 resultado. Pode atentar para a linha que chama a consulta na tabela: $query = $this->db->get_where('usuario', array('id'=> $id)); Onde "id" é o nome de seu campo na tabela e a váriavel "$id" é o ID do usuario que estará logado. Novamente encontramos no manual: Codeigniter->User_Guide->Active rocord Compartilhar este post Link para o post Compartilhar em outros sites
brunojds 0 Denunciar post Postado Agosto 28, 2012 E qual seria o melhor modo de recuperar a id de quem esta logando? Compartilhar este post Link para o post Compartilhar em outros sites
CarlosMarx 4 Denunciar post Postado Agosto 29, 2012 Bem, uma das formas seria acrescentar as seguintes linhas a sua função de validação no model: function ValidaLogin() { $this->db->where('user_login', $this->input->post('usuario')); $this->db->where('user_senha', md5($this->input->post('senha'))); $query = $this->db->get('usuario'); if($query->num_rows == 1) { //Linhas adicinoadas iniciam aqui, recuperando os dados do banco e inserindo na session do CI $data = array( 'id' => $row->id, 'fname' => $row->first_name, 'lname' => $row->last_name, 'username' => $row->username, 'is_logged_in' => true ); $this->session->set_userdata($data); //Fim das linhas adcionadas, atente para 'is_logged_in' => true que já valida o login return true; } } * Lembrando que id, first_name, last_name, username são os nomes dos campos da minha tabela de usuários no BD, configure de acordo com seu BD Voltando ao Controller, na função index o "if" agora fica assim: if($query) //Se o Usuário e senha existir no mesmo registro... { redirect('admin/painel'); } Na sua view do admin/painel, você pode recuperar os dados do session com os seguintes códigos: echo $this->session->userdata('userid'); echo $this->session->userdata('fname'); echo $this->session->userdata('lname'); echo $this->session->userdata('username'); Agora você tem os dados de seu usuário para recuperar onde quiser. Espero que possa ajudar, me parece que está bastante explicado, mas segundo um amigo, eu sou meio louco e as vezes me perco em meus próprios raciocínios, então, dá uma conferida aí, aqui funcionou beleza. Qualquer coisa só perguntar. Compartilhar este post Link para o post Compartilhar em outros sites
brunojds 0 Denunciar post Postado Agosto 29, 2012 fiz exatamente como você falo mas não aparece nada, nem erro. quando dou echo $this->session->userdata('userid'); nas paginas views do usuario == Estrutura da minha tabela usuario user_id int(11) user_login varchar(10) user_senha varchar(32) user_admin tinyint(1) user_nome varchar(100) user_cidade varchar(50) user_estado varchar(50) <?php class Login_model_user extends CI_Model{ function ValidaLoginuser() { $this->load->library('session'); $this->db->where('user_login', $this->input->post('usuario')); $this->db->where('user_senha', md5($this->input->post('senha'))); $this->db->where('user_admin', 0);//aqui compara se 'user_admin igual a "0" é um usuario comun $query = $this->db->get('usuario'); if($query->num_rows == 1) { $data = array( 'userid' => $row->user_id, 'user_name' => $row->user_nome, 'userlogin' => $row->user_login, 'useradmin' => $row->user_admin, 'usercidade' => $row->user_cidade, 'userestado' => $row->user_estado, 'is_logged_in' => true ); $this->session->set_userdata($data); return true; } } } ?> class Login extends CI_Controller { public function __construct() { parent::__construct(); } public function index() { $this->load->model('login_model_user');//Carrega o model $query = $this->login_model_user->ValidaLoginuser();//Chama a função da Model que checa o usuário no BD if($query) //Se o Usuário e senha e user_admin = 0 existirem no mesmo registro... { redirect('usuario/painel'); }else //-------------Adiminitrador-------------------------------------------------------------- $this->load->model('login_model_admin');//Carrega o model $query = $this->login_model_admin->ValidaLoginadmin();//Chama a função da Model que checa o usuário no BD if($query) //Se o Usuário e senha e user_admin = 1 existirem no mesmo registro... { $data = array( 'login' => $this->input->post('usuario'), 'is_logged_in' => true ); $this->session->set_userdata($data); redirect('admin/painel'); }else { $this->load->view('layouts/admin.login.php'); } } } Compartilhar este post Link para o post Compartilhar em outros sites
CarlosMarx 4 Denunciar post Postado Agosto 30, 2012 Pelo que pude observar, para recuperar os dados você vai ter que logar como user e não como Admin. Porque você adicionou as linhas de código na função que valida o Admin e não o usuário. Aqui tem um tutorial que mostra direitinho como recuperar os dados da session, exatamente da forma como falei. Ir para o Tutorial Compartilhar este post Link para o post Compartilhar em outros sites
brunojds 0 Denunciar post Postado Agosto 30, 2012 sim eu estou logando como usuário comum, mesmo assim não aparece nada. eu separei os arquivos de usuário e administrador tirando os arquivos que serve para os dois como o login.php o resto eu dividi em 2 para administrar melhor. ex: na pasta models tenho: o login_model_user que ja postei e loga como usuário e o <?php class Login_model_admin extends CI_Model{ function ValidaLoginadmin() { $this->db->where('user_login', $this->input->post('usuario')); $this->db->where('user_senha', md5($this->input->post('senha'))); $this->db->where('user_admin', 1);//aqui compara se 'user_admin igual a "1" é um administrador $query = $this->db->get('usuario'); if($query->num_rows == 1) //Se o Usuário e senha e user_admin = 1 existir no mesmo registro é um administrador { return true; } } } ?> esse é para logar como administrador Compartilhar este post Link para o post Compartilhar em outros sites
CarlosMarx 4 Denunciar post Postado Agosto 30, 2012 Só um detalhe: Você criou a tabela de ci_session? CREATE TABLE `ci_sessions` ( `session_id` varchar(40) NOT NULL DEFAULT '0', `ip_address` varchar(16) NOT NULL DEFAULT '0', `user_agent` varchar(50) NOT NULL, `last_activity` int(10) unsigned NOT NULL DEFAULT '0', `user_data` text, PRIMARY KEY (`session_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC Compartilhar este post Link para o post Compartilhar em outros sites