Jump to content

[Resolvido] Login com CodeIgniter


zetoino
 Share

Recommended Posts

Boas pessoal estou a descobrir a CodeIgniter, e estou aqui a tentar fazer umas coisas para começar queria fazer um login ja vi vários na net mas nenhum consegui por a funcionar como eu quero ( ou seja o mais simples ) pois os que encontro são todos muito elaborados e quando começo a mexer lhes aquilo passa se tudo. Sera que alguém por ai que use esta framework que me consiga ajudar em como posso fazer um sistema de login simples ?

os problemas tem me aparecido no caso de passar dados das vistas para os controladores e vice versa.....

Desde ja Obrigado

Link to comment
Share on other sites

Ate agora tenho tudo alinhado agora a ideia que tenho é que tenho de chamar um uma função de um modelo função essa que depois vai a base dados verificar se existe la o mail que foi introduzido e retorna uma resposta que depois vou receber no controlador para depois dar como sessao criada.....

o meu problema esta aqui mesmo tipo tipo não estou a conseguir a parte de chamar a função do modelo e não estou conseguir no modelo ir a bd verificar e voltar a resposta 😛

Peço desculpa se me estou a espressar mal estou a começar nisto de codeIgniter e ainda estou meio perdido...

Link to comment
Share on other sites

vamos la ver se me conseguem ajudar nisto do login:

tenho o modelo com uma função assim :

 

       function  login($email,$password){
  
      
      
      $this->db->where("Email",$email);
      $this->db->where("password",$password);
      $query=$this->db->get("utilizador");
     
      if($query->num_rows()>0)
     {
        $dadosParaSessao = null;      
                
              foreach($query->result() as $rows)
        {
                  //add all data to session
              $dadossessao = array(
                                'user_id' => $rows->id_utilizador,
                              'user_name' => $rows->Nome,
                              'user_email' => $rows->Email,
                            
                              );
                                                          
                                                          $dadosParaSessao = $dadossessao;
                                                          
                      }
              
                          $this->load->library('session');
              
                        $this->session->set_userdata($dadosParaSessao);
         
              return true;          
              }
              return false;
  }


  

depois no contrloador tenho isto :

  //   if($this->user_model->verificarUser($_POST['username'])){

         if($this->user_model->login($_POST['username'] , $_POST['password'] )){
           $message = 'sessao!';
                $bg_color = "green";
               
         //  }

       }else{
           $message = "email ou pass errados ";
           $bg_color = "#FFEBE8";
       }

e tipo sempre que meto email e de seguida a pass errada ele da me erro de dados incorrectos tudo bem mas quando meto o mail e pass correcto ele devia dar true e no controlador dar a mensagem de sessao, mas nao ele simplemnte não faz nada carrego em login ( com a pass e email correcto ) e ele não faz nada, caso eu comente tudo de variaveis do modelo e meter apenas a ir a bd verificar e dar true ou false ( se esta na bd ou não , funciona tudo normal, leva me a crer que o problema esta no :

    foreach($query->result() as $rows)
        {
                  //add all data to session
              $dadossessao = array(
                                'user_id' => $rows->id_utilizador,
                              'user_name' => $rows->Nome,
                              'user_email' => $rows->Email,
                            
                              );
                                                          
                                                          $dadosParaSessao = $dadossessao;
                                                          
                      }
              
                          $this->load->library('session');
              
                        $this->session->set_userdata($dadosParaSessao);

Alguém me ajude já não sei que faca mais ...

cumprimentos

Link to comment
Share on other sites

Boas desde ja obrigado pela resposta, estive a ver os videos e ele tem praticamente o mesmo que eu, nao consegui resolver mesmo assim 😉

o meu codigo esta a funcionar valida os o utilizador e tudo o meu problema esta mesmo no cirar a variavel para guardar os dados da sessao.... nao sei que faça a partida devia funcionar 😉

Link to comment
Share on other sites

foreach??? Supostamente só deve existir um registo para essa combinação user/pass...

Usa isto...

if($query->num_rows()>0) {
        $dadosParaSessao = null;
        $user = $query->row();
        // add all data to session
        // bla bla bla...
}
Link to comment
Share on other sites

Seria isto :

    function  login($email,$password){
      
      
      
      $this->db->where("Email",$email);
      $this->db->where("password",$password);
      $query=$this->db->get("utilizador");
     
      if($query->num_rows()>0)
     {
       $dadosParaSessao = null;  
        
         $dadossessao = array(
                                'user_id' => $rows->id_utilizador,
                              'user_name' => $rows->Nome,
                              'user_email' => $rows->Email,
                            
                              );
                                                          
                            $dadosParaSessao = $dadossessao;
                                                          
                      
              
                          $this->load->library('session');
              
                        $this->session->set_userdata($dadosParaSessao);[/b]
        
              return true;          
              }
              return false;
  }

se eu tirar a parte que esta a bold ele funciona normal e da me a mensagem de que existe na bd dados e tal como se tivesse feito login, agora se meter isto para meter as variaveis de sessao para guardar a informacao da sessao do utilizador ele deixa de funcionar quando eu meto o login e pass certa carrego no botao e ele nao faz nada se meter a pass errada ele da aviso de passa errada e tudo normal é so mesmo quando ele entra ali na parte de criar a variavel de sessao o array e tal....estarei a fazer algo errado ? isto tem alguma configuracao especial nos ficheiros de configuracao mesmo do codeigniter ?

Link to comment
Share on other sites

Viva,

Nessa função não estás a definir a variável rows.

Supostamente, deves querer apenas 1 row... assim:

function  login($email,$password){
        
    $this->db->where("Email",$email);
    $this->db->where("password",$password);
    $query=$this->db->get("utilizador");
     
    if($query->num_rows()>0)
    {
        $row = $query->row(); 
        $dadosParaSessao = array(
            'user_id' => $row->id_utilizador,
            'user_name' => $row->Nome,
            'user_email' => $row->Email,                      
        );
                                                          
        $this->load->library('session'); 
        $this->session->set_userdata($dadosParaSessao);   
        return true;          
    }
    return false;
}
Link to comment
Share on other sites

Realmente o for e isso do row estava errado ja foi corrigido mas continuei a ter o mesmo problema, embora foi resolvido agora 😄 a versao de xamp que estava a usar era demasiado antiga instalei agora uma versao mais recente e ja funcoiona sem problemas... a todos Obrigado pela ajuda e ate uma proxima duvida 🙂

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.