2010-02-13 5 views
3

En utilisant Codeigniter, je suis capable de créer une fonction pour l'authentification de l'utilisateur. J'ai une fonction que j'appelle pour vérifier si le nom d'utilisateur/mot de passe donné est valide. Le problème que je rencontre est, je ne veux pas que le code affiche "Invalid Login" si un mot de passe n'est pas donné. Il devrait lire "Mot de passe est requis" ou quelque chose comme ça.Supprimer le message d'erreur inutile avec la validation de formulaire

Je suppose que je ne pouvais pas exiger le champ de mot de passe, dans ce cas un mot de passe vide entraînerait de toute façon une erreur de connexion. Cependant, je veux m'assurer que l'injection SQL ne se produit pas.

$this->form_validation->set_rules('username','username','required|callback_authenticate'); 
$this->form_validation->set_rules('password','password','required'); 

$this->form_validation->set_message('authenticate','Invalid login. Please try again.'); 

fonction Authentifier

function authenticate() { 

    return Current_User::checkLogin($this->input->post('username'), 
              $this->input->post('password')); 
} 
+0

Doit être le manque de sommeil, mais ne nécessitant pas ce ne serait pas la fin du monde. Il n'y a rien à injecter. Je dois juste m'assurer que s'il y a du "texte", je dois enlever tout ce qui est bidon. – luckytaxi

Répondre

1

Je vous suggère de créer une fonction de rappel que vous pouvez utiliser en règle générale que vous pouvez ajouter à la fonction set_rules() comme ceci:

$ this-> form_validation-> set_rules ('mot de passe', 'mot de passe', 'required | your_callback_function');

De cette façon, la règle required est sûre d'être appelée en premier. Lorsque l'utilisateur tape un mot de passe, la règle suivante est vérifiée. Dans ce cas, il passe par votre fonction de validation de rappel. Si l'utilisateur n'entre rien dans votre champ de mot de passe, le message d'erreur devrait automatiquement indiquer que le mot de passe est requis.

Si vous souhaitez empêcher l'injection SQL dans le champ de mot de passe, ajoutez la règle sha1 ou md5 au champ de mot de passe.

Consultez les Callbacks: Vos propres fonctions de validation dans le Form Validation library. En outre, si vous utilisez le Active Record class au lieu de taper manuellement dans votre requête, vos requêtes seront plus sûres puisque les valeurs sont automatiquement échappées par le système. Vous avez également la possibilité d'utiliser des instructions préparées pour empêcher l'injection SQL.

Questions connexes