Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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();
}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()...
Na função login você grava uma sessão.
Se "entrou" for true, então ela ja foi executada, caso contrario não.
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?
>
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.
Vlw George, uma linha resoveu quase 2 dias de dor de cabeça... hehehehehe
abraço
Coloque na action que faz login.
Por exemplo, sua action é: