2012-08-31 3 views
1

Édition 1) J'ai configuré une zone d'enregistrement/de connexion et j'ai tout validé (y compris les champs vides) et j'affiche un message d'erreur si le nom d'utilisateur et/ou le mot de passe sont incorrects. À l'heure actuelle, je peux obtenir un message d'erreur à afficher si les champs sont laissés en blanc, mais sur soumettre la page redirige vers la «page privée» soit avec des informations d'utilisateur correct ou incorrect. Ceci est mon code actuel:Codeigniter, mot de passe ou nom d'utilisateur incorrect (validation de la base de données)

Numéro 1 (RÉSOLU):

Controller:

//This method will have the credentials validation 
    public function credentials_validation() { 
     $data['error'] ="Invalid Username or Password"; 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|callback_username_check'); 
     $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_password_check'); 

      if($this->form_validation->run() == FALSE) 
      { 
      //Field validation failed. User redirected to login page 
      $this->index(); 

      }else{ 
       $this->load->model('register_model'); 

       if($query = $this->register_model->validate()) { 
       $this->load->model('news_model'); 

       $data = array('news' => $this->news_model->getArticle()); 
       $data['title'] = 'Admin | Home'; 
       $data['heading'] = 'News Articles'; 
       $data['main_content'] = 'admin/news'; 
       $this->load->view('include/template', $data); 

       }else { 
       $this->load->view('login',$data); 
       }  

      } 
    } 

numéro 2) Nouvelles article page charge seulement 1 article et affiche url nom de la classe.

Controller Nouvelles:

class News extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
     $this->load->model('admin/news_model'); 
    } 

    public function index() { 
     $data = array('news' => $this->news_model->getArticle()); 
     $data['title'] = 'Admin | News Home'; 
     $data['heading'] = 'News Articles'; 
     $this->load->view('admin/news', $data); 
} 

}

Le modèle de nouvelles est tout simplement en tirant la table de base de données, sélectionnez tous et par ordre id et résultant du tableau. Quelqu'un a des idées pour lesquelles cela n'affiche qu'un seul résultat? Je pense que c'est quelque chose à voir avec la méthode foreach? PS, Aucun message d'erreur n'a été affiché à partir du journal d'erreurs de CI ou de php!

+0

, je pense aussi que depuis la réponse résolue ci-dessous la question initiale, vous devez accepter cette réponse et de mettre la nouvelle question comme distincte question. Pour moi, vous aider est un jeu et je gagne des points. Si ma réponse résout votre problème mais si vous ne le marquez pas comme une réponse, vous ne me permettez pas de gagner des points ... et cela ne me motive pas à jouer à ce "jeu" –

Répondre

5

Le meilleur moyen serait de stocker les messages d'erreur dans un tableau par ex.

$data['error'] ="Invalid Login"; 

Par exemple, dans le contrôleur

if($query = $this->register_model->check_membership()) { 
    $data['main_content'] = 'signup_successful'; 
    $this->load->view('include/template', $data); 

}else { 
    $data["error"]="Invalid User Id and Password combination"; 
    $this->load->view('signup',$data); 
} 

La fonction check_membership doit vérifier si l'identifiant de connexion et la combinaison de mot de passe sont ok ou non.

Et puis dans la page de vue signup, mettre quelque chose en haut comme

if (isset($error)){ 
    echo "<div class='error'>$error</div>"; 
} 
+0

J'ai pris votre avis et cela semble fonctionner un tableau (hourra). Maintenant, lorsque l'utilisateur tente de se connecter en utilisant un nom d'utilisateur ou un mot de passe incorrect, un message d'erreur s'affiche sur la page de connexion et, lorsque cela est correct, il est directement dirigé vers la page d'actualités de l'administrateur. Un autre problème a surgi cependant et montre seulement 1 article de nouvelles (résultat est dans la méthode d'objet essayé de tableau) au lieu d'afficher tout (aucun ensemble de limite) et l'URL affiche le nom de classe "credentials_validation", des idées pour résoudre ce problème? Je vais ajouter mon code dans mon post original qui fonctionne maintenant pour vous de voir en utilisant votre méthode - merci encore! – Shimsham84

+0

Essayez ceci ($ this-> db-> last_query()); immédiatement après avoir appelé la méthode select de votre modèle. c'est-à-dire $ data = array ('news' => $ this-> news_model-> getArticle()); echo ($ this-> db-> last_query()); Cela vous montrera ce qui était le SQL Query Ou enable_profiler à true (Google pour cela ou Check Out CI Documentation), dans votre contrôleur. Cela vous dira ce qui se passe avec votre code derrière la scène. Cela pourrait vous donner une idée de la raison pour laquelle vous n'avez qu'un seul enregistrement. –

Questions connexes