[Résolu] urlRewrite et session

flipflipflipflip Member
juillet 2017 modifié dans Entraide
Bonjour,

Je dev un plugin qui intègre un système connexion qui n'a pas de lien avec celui de la partie admin de pluxml. J'ai bien sûr prévue une fonction pour que l'utilisateur se déconnecte :
public function accountLogout() {
		global $plxMotor;
		
		$_SESSION = array();
		session_unset();
		session_destroy();
		unset($_SESSION);
		
		// message ou cas ou la redirection ne marche pas
		echo 'Vous venez de vous déconnecter, à bientôt.<br>';
		
		header('Location: '.$plxMotor->urlRewrite('index.php'));
		exit;
	}

Ensuite j'ai une fonction qui vérifie la durée de validité d'une session php. Si elle dépasse X secondes alors l'utilisateur est déconnecté :
public function sessionTimeout() {		
		if(isset($_SESSION['portail']['lastaction'])) {
			if((time() - $_SESSION['portail']['lastaction']) > $this->getParam('timeoutsession')) {
				$this->accountLogout();				
			} else {
				return true;
			}
		}
	}

Lorsque je passe directement par accountLogout() pas de problème je suis bien redirigé sur la page d'accueil mais lorsque je passe par sessionTimeout() j'obtiens l'erreur :
( ! ) Fatal error: Call to a member function urlRewrite() on null in /var/www/html/plugins/portail/portail.php on line 497

La ligne 497 correspond à
header('Location: '.$plxMotor->urlRewrite('index.php'));
De la fonction accountLogout()

Pour contrôler la durée d'activité de la session dans le __construct j'ai :
if($this->getConnect()) {
			$this->sessionTimeout();
			$_SESSION['portail']['lastaction'] = time();
		}
getConnect contrôle juste que l'utilisateur est connecté.

J'ai un string de l'array

Réponses

  • J'ai trouvé. Il ne faut pas mettre l'appel de sessionTimeout dans le __construct mais dans le premier hook de mon plugin...

    Désolé pour le dérangement.

    J'ai un string de l'array

Connectez-vous ou Inscrivez-vous pour répondre.