yuriarrua 0 Denunciar post Postado Junho 21, 2010 Salve pessoal estou aqui novamente com uma duvida, bom é o seguinte eu preciso executar um codigo apos o login e preciso que esse codigo seja executado somente uma vez, eu coloquei ele no meu users_controler, mais dai ele executa toda a vez que eu acesso uma pagina do site e tentei colocar no app_controller mais tbm nao obitive sucesso, tentei com afterFilter(), afterRender(), beforeRender() e nada, o codigo que eu quero executar é simplesmente um insert no BD que salva o username do usuario logado e a data do login, segue o codigo abaixo. $this->loadModel('Visita'); $usuario=$this->Session->read('Auth.User.username'); $datalogin=date('Y-m-d H:i:s'); $this->Visita->set(array('username' => $usuario,'last_login' => $datalogin,'data_login' => $datalogin)); $this->Visita->save(); } Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Junho 22, 2010 Coloque na action que faz login. Por exemplo, sua action é: function login(){ minhaFuncao(); } Compartilhar este post Link para o post Compartilhar em outros sites
yuriarrua 0 Denunciar post Postado Junho 23, 2010 Assim é a mesma coisa de eu colocar o meu insert dentro da função login, dai assim ele ainda nao tem todos os dados para salvar no banco, eu estava pensando em colocar um if no app_controller mais ou menos assim if (se a função login for executada){ $this->loadModel('Visita'); $usuario=$this->Session->read('Auth.User.username'); $datalogin=date('Y-m-d H:i:s'); $this->Visita->set(array('username' => $usuario,'last_login' => $datalogin,'data_login' => $datalogin)); $this->Visita->save(); }else{não faz nada} mais ai que esta o problema como eu faço para saber se uma determinada função foi executada? nesse caso a função login()... Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Junho 23, 2010 Na função login você grava uma sessão. Se "entrou" for true, então ela ja foi executada, caso contrario não. Compartilhar este post Link para o post Compartilhar em outros sites
yuriarrua 0 Denunciar post Postado Junho 23, 2010 Eu fiz o meu if assim, e tbm tentei colocar "true" no lugar de "1" e tbm nao deu certo, isso tudo no app_controller. function visitas() { if($this->login() == 1){ $this->loadModel('Visita'); $usuario=$this->Session->read('Auth.User.username'); $datalogin=date('Y-m-d H:i:s'); $this->Visita->set(array('username' => $usuario,'data_login' => $datalogin)); $this->Visita->save();}else{} Estou fazendo algo errado? Compartilhar este post Link para o post Compartilhar em outros sites
georgecp 0 Denunciar post Postado Junho 23, 2010 Eu fiz o meu if assim, e tbm tentei colocar "true" no lugar de "1" e tbm nao deu certo, isso tudo no app_controller. function visitas() { if($this->login() == 1){ $this->loadModel('Visita'); $usuario=$this->Session->read('Auth.User.username'); $datalogin=date('Y-m-d H:i:s'); $this->Visita->set(array('username' => $usuario,'data_login' => $datalogin)); $this->Visita->save();}else{} Estou fazendo algo errado? Yuri você tem que fazer o seguinte: Coloca no user_controller: function beforeFilter() { $this->Auth->autoRedirect = false; } Este parametro no beforeFilter é o que precisa para que voce consiga executar uma função logo após o login. E na função login coloque o seguinte: if( !(empty($this->data)) && $this->Auth->user() ){ //Coloque a funçaõ aqui... //logo após a função coloque: $this->redirect($this->Auth->redirect()); } É isso ai. Compartilhar este post Link para o post Compartilhar em outros sites
yuriarrua 0 Denunciar post Postado Junho 23, 2010 Vlw George, uma linha resoveu quase 2 dias de dor de cabeça... hehehehehe abraço Compartilhar este post Link para o post Compartilhar em outros sites