Redirection selon $_SESSION

Mammouth du PHP | 643 Messages

20 mai 2016, 18:29

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

Eléphant du PHP | 337 Messages

21 mai 2016, 16:35

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.