2010-09-13 3 views
0

Je travaille actuellement sur l'ajout de pré-validation à mon site Web. Ainsi, les pages nécessitant une connexion ou d'autres critères ne s'afficheront que si votre session correspond à ces critères. J'ai la plupart du système qui fonctionne, mais j'ai un obstacle majeur. Je n'arrive pas à comprendre comment arrêter CodeIgniter d'exécuter le reste du contrôleur (et ainsi afficher la page de toute façon), lorsque la validation échoue.Comment quitter l'exécution d'un programme codeigniter?

Voici ma configuration:

  • Toutes mes pages sont dans le contrôleur de contenu
  • Mon système de sécurité est un modèle appelé security.php
  • Dans la fonction privée _head (qui est appelé par tous les page), je charge security.php et appelle sa fonction principale: run()
  • $ this-> security-> run() obtient les critères de validation spécifiques pour la page, et les vérifie.

    • Si l'utilisateur passe, puis exécutez() ne fait rien, et l'exécution de la page continue

    • C'est là que je besoin d'aide. Si l'utilisateur ne passe pas, alors j'ai besoin d'afficher une page d'erreur, et d'arrêter le contrôleur d'appeler d'autres vues.

Est-ce que quelqu'un sait comment faire cela?

Merci,

Lemiant

Répondre

1

Vous pouvez faire une des deux choses. A serait de rediriger vers une autre page avec un uri différent. B serait d'utiliser une instruction if/else pour choisir quelle vue vous affichez sous le même uri.

Une chose que vous devez faire est d'avoir la méthode de sécurité dont vous avez parlé retourne TRUE ou FALSE si elle réussit ou non.

Exemples:

A:

if(!$this->security->run()) 
{ 
    redirect('my/error/page'); 
} 

B:

if($this->security->run()) 
{ 
    // Security Passes, proceed as normal 
} 
else 
{ 
    // Security Fails, show error page 
} 

Hope this helps

+0

Merci. Cela semble être la seule option. – lemiant

+0

Pourrait charger une vue pour une page d'erreur au lieu d'une redirection() afin de ne pas doubler le nombre de demandes de serveur. –

+0

@Mitchell McKenna - Oui, je sais que c'est ce que j'ai donné l'option B.J'ai donné l'option A dans le cas où il voulait url être comme/erreur/non autorisé ou quelque chose comme ça –

0

Comment l'exécution de l'arrêt CodeIgniter: die(); ou exit();

Mais, je ne pense pas que ce soit vraiment ce que vous voulez faire. Ce que vous voulez faire est de charger une vue différente pour montrer une page d'erreur si la validation échoue.

Questions connexes