Bonjour,
pour sécuriser plus mon site je utilise le component security, je voudrais savoir comment je peux appeler une fonction de APPError dans APPController, de mon coté j'ai cette erreur:Fatal Error
Error: Call to undefined method UsersController::handleError()
voici mon code:

 public function beforeFilter() {
         $this->Security->blackHoleCallback = 'hackingFail';
        $this->Auth->allow();
    }

    function hackingFail(){

    //Enregistrement des tentatives de hack dans une table dédiée
    $this->data = array(
            'Hack' => array(
              'location' => $this->referer(),           //Page où la détection s'est effectuée
              'who' =>$this->request->clientIp(false) //IP présumée du hacker
            )
          );
     $this->loadModel('Hack');
     $this->Hack->save($this->data);

    //Appel à la fonction failHacking situé dans /app/Lib/AppError.php
    $this->handleError('failHacking',$this->request->clientIp(false));
  }

J'ai besoin de vos explications pour bien cerner cette coté.
Merci

6 réponses


Bonjour,

Je ne comprend pas tout la. Tu veux faire quoi avec ton handleError ?

wenz
Auteur

je voudrais appeler la fonction function hackingFail() qui est dans /app/Lib/AppError.php pour pouvoir afficher l'erreur sur la page.

Salut,
d'après ce qu'on voit, ta fonction hackingFail() est dans le controlleur et elle est correctement appelée lorsqu'il y a un "hack". Par contre l'erreur est assez claire il me semble: la fonction handleError() n'existe pas (dans le controller).
ici, this fait référence au controller UserController donc tu n'appelle pas une fonction d'AppError mais bien du controller.

wenz
Auteur

je suis un peu embrouiller stp normalement comment je dois faire ça?merci

Ben à toi de voir ce que tu veux.
Déjà, là tu sauvegarder ce qu'a essayer de faire le "hacker" dans la bdd, perso j'aurais plutot tendance à logger l'erreur plutot.
Je pense qu'en suite tu peux simplement rediriger vers la page d'acceuil

    function hackingFail($type){
        $this->log("Tentative de hack '".$type."'. ip:". $this->request->clientIp(false) ." refere:".$this->referer());
        $this->Session->setFlash("Qu'es ce que tu fais!?");
        $this->redirect('/');
        exit();
    }
wenz
Auteur

Merci pour le code mais j'ai un autre problème je n'arrive plus à me connecter, tous les formulaires ne marche plus