php email zend-framework2 token verification

php - Comprobación de token de correo electrónico de Zend Framework 2



email zend-framework2 (1)

El flash messenger está diseñado para mostrar mensajes en la próxima solicitud, por lo que probablemente desee redireccionar a otra URL después de agregar su mensaje de éxito. Ese puede ser el único problema (de lo contrario, háganos saber lo que sucede en la primera solicitud).

Estoy tratando de crear un sistema (en Zend Framework 2) para validar el correo electrónico de un usuario ingresando un correo electrónico con un enlace con un token (por ejemplo: http://example.com/user/autenticate/verify/abG12Fdss67j3kgfdds4jdpa74FiP9 ) de modo que si el token se encuentra en la base de datos, la cuenta prerregistrada pasa al estado VERIFICADO.

Estoy usando una ruta en module.config.php como esta:

''verify'' => array( ''type'' => ''Segment'', ''options'' => array( ''route'' => ''/user/autenticate/verify/:token'', ''defaults'' => array( ''__NAMESPACE__'' => ''User/Controller'', ''controller'' => ''Autenticate'', ''action'' => ''verify'', ), ''constraints'' => array( ''token'' => ''[a-zA-Z0-9]{30}'' ), ), ),

luego en AutenticateController.php, el siguiente método de acción:

public function verifyAction() { sleep(3); // Delay against brute attack (is it useful?) $token = $this->params()->fromRoute(''token''); $registerverification = new RegisterVerification(); try { $registerverification = $this->getRegisterVerificationTable()->getRegisterVerification($token); // If arrives here (no exception) means that the token was in the database $aux = $this->getRegisterVerificationTable()->deleteRegisterVerification($token); $user = new User(); $user = $this->getUserTable()->getUser((int)$registerverification->id); $user->verified = date("Y-m-d H:i:s"); $this->getUserTable()->saveUser($user); $this->flashMessenger()->addMessage("Now your account is active"); } catch (/Exception $e) { // Could not find row: $token $this->flashMessenger()->addMessage($e->getMessage()); } return array(); }

Y un verify.phtml como este:

<?php echo $this->flashMessenger()->render(); ?>

Esto funciona, pero no en el primer intento , sino solo después de actualizar la URL ( http://example.com/usuario/autenticado/verificar/abG12Fdss67j3kgfdds4jdpa74FiP9 ).

¿Alguien puede ayudarme en lo que tengo que hacer para que el método verifyAction () de AuttenticateController.php se ejecute la primera vez que se llama a la URL?