Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [CI] Login con doppia tabella

    ciao!!
    devo fare un login che interroga due tabelle.
    in pratica se trova i dati nella prima fa il login, sennò interroga la seconda.
    nella seconda se trova i dati fa il login, sennò messaggio di errore.
    avevo provato così:
    Codice PHP:
        public function doLogin() {
            
    $this->load->library('form_validation');
            
    $this->form_validation->set_rules('username''Username''trim|required');
            
    $this->form_validation->set_rules('password''Password''trim|required|sha1|callback_tbl1');
            if (
    $this->form_validation->run() == FALSE) {
                
    $data = array();
                
    $data['titolo'] = 'Login';
                
    $this->load->view('header'$data);
                
    $this->load->view('login_view'$data);
                
    $this->load->view('footer');
            } else {
                
    redirect('home''refresh');
            }
        }

        function 
    tbl1($password) {
            
    $username $this->input->post('username');
            
    $result $this->username->logintbl1($username$password);
            if (
    $result) {
                
    $sess_array = array();
                foreach (
    $result as $row) {
                    
    $sess_array = array(
                           ...............
                    );
                    
    $this->session->set_userdata(...............);
                }
                return 
    TRUE;
            } else {
                
    tbl2($username$password);
            }
        }

        function 
    tbl2($user$password) {
            
    $username $user;
            
    $result $this->username->logintbl2($username$password);
            if (
    $result) {
                
    $sess_array = array();
                foreach (
    $result as $row) {
                    
    $sess_array = array(
                      ..................
                    );
                    
    $this->session->set_userdata(............);
                }
                return 
    TRUE;
            } else {
                
    $this->form_validation->set_message('tbl2''Invalid username or password');
                return 
    FALSE;
            }
        } 
    se i dati nella prima tabella sono giusti allora viene fatto il login.
    sennò si blocca, come se nn riuscisse ad eseguire il controllo sulla seconda.
    mi date una mano please??

  2. #2
    Ciao,

    a occhio, però non sono sicuro, manca il return nella function tbl1 qui:
    Codice PHP:
    if ($result) { 
                
    $sess_array = array(); 
                foreach (
    $result as $row) { 
                    
    $sess_array = array( 
                           ............... 
                    ); 
                    
    $this->session->set_userdata(...............); 
                } 
                return 
    TRUE
            } else { 
                return 
    tbl2($username$password); 
            } 
    cioè....il valore di tbl2 tu lo ritorni nella funzione tbl1, però li si ferma e non viene restituito dalla funzione tbl1 (ripeto, a occhio, magari ho detto una cavolata)

  3. #3
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    scusa ma accedi alla seconda funzione se la prima non esegue il login?
    la tbl2 non dovrebbe essere identica (anche se la cosa è ridondante) alla prima tbl1
    inoltre tbl2 riceve in input $user come username mentre la prima pare che legga da form..
    If you think your users are idiots, only idiots will use it. DropBox

  4. #4
    si accedo alla seconda funzione solo se la prima non esegue il login.
    sono uguali perchè in pratica controllano user e pwd, ma da due tabelle diverse, che i nomi dei campi diversi.

    ho provato con entrambe le modifiche, ma ottengo lo stesso risultato di prima.
    forse potrei a fare un redirect alla seconda funzione in caso di FALSE della prima.

  5. #5
    mettendo le righe della seconda funzione dentro all'else (e quindi non mettendo una funzione separata) funziona.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.