Page 1 sur 1

Redirection selon $_SESSION

Posté : 20 mai 2016, 18:29
par yoann38
Salut, oui c'est encore moi ....
Un message par jour en ce moment ....

Juste j'essai d'améliorer mon script et au lieu de redirigé l'utilisateur sur une page "basique".
J'aimerais l'envoyé sur la page qui correspond à son profil.
J'ai donc fait ceci:
if($req->rowCount() > 0) {
	  
  	$resultat = $req->fetch();
	$_SESSION['membre'] = $resultat;
	$_SESSION['pseudo'] = $resultat['pseudo'];
	$_SESSION['password'] = $resultat['password'];
	$_SESSION['id_region'] = $resultat['id_region']; 
	$_SESSION['type'] = 'client';
	$_SESSION['statut'] = $resultat['statut'];
		
	if(!empty($_POST['remember'])) setcookie('identification', serialize(array($pseudo, $password)), mktime(0, 0, 0, date('m'), date('d'), date('Y')+1), '/');
	

	header('Location: /site/actu/region-'.simplification($aRegion[$_SESSION['membre']['id_region']]).'.html');
	
  } else {
     $return = '<div class="alert alert-danger" role="alert"><i class="fa fa-frown-o"></i> Mauvais identifiant ou mot de passe !</div>';

  }
// .....
Ce ne tient pas compte de $aRegion[$_SESSION['membre']['id_region']].
Je me retrouve donc juste avec : /site/actu/region-.html

J'ai oublier quelque chose ?
Merci à vous encore

Re: Redirection selon $_SESSION

Posté : 21 mai 2016, 16:35
par finipe
Tes définitions de variables sont curieuses :
$_SESSION['membre'] = $resultat;
$_SESSION['pseudo'] = $resultat['pseudo'];
$_SESSION['password'] = $resultat['password'];
$_SESSION['id_region'] = $resultat['id_region']; 
$_SESSION['type'] = 'client';
$_SESSION['statut'] = $resultat['statut'];
Tu définis $_SESSION['membre'] comme étant une variable array, puis les autres variables comme étant à une seule dimension, et ensuite tu utilises $_SESSION['membre']['id_region'] comme la deuxième dimension de ton array $_SESSION['membre'], ça ne te renverra rien.

Il faudrait définir la variable $_SESSION['membre'] comme ça :
$_SESSION['membre'] = array('pseudo' => $resultat['pseudo'], 'password' => $resultat['password'], ...........);
Et ensuite, tu accèdes à tes valeurs avec $_SESSION['membre']['pseudo'], $_SESSION['membre']['password'], etc.

Enfin, si tu utilises ces valeurs pour renvoyer le résultat d'un array, je te suggère de le coder plutôt comme ça :
// Si $_SESSION['membre']['id_region'] est une chaîne de caractère
$aRegion[strval($_SESSION['membre']['id_region'])]

// Si $_SESSION['membre']['id_region'] est un entier
$aRegion[intval($_SESSION['membre']['id_region'])]

J'ajoute que quand tu as une variable qui ne te renvoie pas ce qui est attendu, il est toujours utile de faire un petit print_r($nom_de_variable) pour voir ce qu'elle contient réellement.