Page 1 sur 1

Connexion d'un membre - Affchage d'un petit mot de bienvenue

Posté : 06 oct. 2008, 23:23
par Jackisback
Bonsoir,

Mon script de connexion fonctionne bien.

Ma redirection fonctionne bien aussi.

Mais juste avant la redirection, j'affiche un message, "Bonjour xxx, vous allez être redirigé ....."

Voici le script de la page de connexion:
<?php
session_start();
$_SESSION['login'] = $pseudo;?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Refresh" content="5;URL=../../index.php"> 
<title>Page d'accueil des membres</title>

</head>
<body>
<div id="corps">
  <div id="image_fond"></div>
  <div id="logo"><a href="../../Index.php"><img src="../../Images/Logo/colombe_couleur_text.png" width="160" height="160" border="0" /></a></div>
  <div id="posmenu">
<?php include("../../Menu/MenuPages.php"); ?>
<?php
// Initialisation du message de réponse

$message = 'Bonjour '.$pseudo.', vous allez être redirigé vers l\'espace membre';
?>
  </div>

<div id="titre">Bienvenue sur le site de l'association xxx</div>

<div id="message_bienv">
  <p><?php echo $message ?></p>
</div>

</div>
</body>
</html>
Voilà, j'aimerais savoir ce qu'il faut modifier pour afficher le pseudo du membre à la place de '.$pseudo.' ....

Si quelqu'un à une idée ?

Posté : 07 oct. 2008, 00:00
par djtec
Il faudrait que tu définisse $_SESSION['login'] avant d'arriver à cette page c'est à dire au moment où tu vérifie les informations.

Après tu fais:
<?php
// Initialisation du message de réponse

$message = 'Bonjour '.$_SESSION['login'].', vous allez être redirigé vers l\'espace membre';
?> 

Posté : 07 oct. 2008, 08:42
par Jackisback
Je pensais que ce que j'avais mis au debut du script pouvait suffir ...

Ce n'est pas bon ??

Posté : 07 oct. 2008, 09:10
par charabia
Ta variable $pseudo correspond à quoi ? A l'information recueillie à partir du formulaire ? Si oui ça devrait plutôt être $_POST['pseudo'], à moins que tu l'ais défini dans ta page de traitement.

Tu peux définir ta session lors du traitement, par exemple
if (//traitement)
{
	$_SESSION['login'] = $_POST['pseudo'];
	//redirection ici
}
else
{
	// une erreur
}
Ensuite comme l'a indiqué djtec, utiliser ta session $_SESSION['login'] sur toutes les autres pages (sans oublier le session_start()), et non pas $_POST['pseudo'].

Si tu prends $_POST['pseudo'], tu déclares une session sans l'utiliser, c'est dommage ;)

Posté : 07 oct. 2008, 09:24
par Jackisback
Salut,

Merci bien des conseils je vais regarder ça de plus près ...

---------------------

EDIT:

Et pour la syntaxe sinon c'est correct ?:
$message = 'Bonjour "'.$_SESSION['login'].'", vous allez être redirigé vers l\'espace membre';
Parceque pour le moment ça m'affiche :

Bonjour "", vous allez être redirigé ....

Et j'ai ajouté corriger le début de la page comme ça:
<?php
session_start();
$_SESSION['login'] = $_POST['pseudo'];?>
C'est correct aussi ?

Euh par contre, tu me dis :

"utilises le $_SESSION['login'] = $_POST['pseudo']; sur les autres pages ...."

Mais est-ce utile de le mettre sur toute les autres pages qui ont déjà le session_start(); ?????

Posté : 07 oct. 2008, 16:39
par charabia
Les syntaxes ont l'air correctes.

Heu...je n'ai pas dis d'utiliser le $_SESSION['login'] = $_POST['pseudo']; sur les autres pages, mais plutôt d'utiliser $_SESSION['login'] à la place de $_POST['pseudo'].

La déclaration de la session, tu ne la fait qu'une fois, au moment du traitement comme je te l'ai expliqué plus haut.

Regarde si tu récupères bien la valeur de $_POST['pseudo']

Posté : 07 oct. 2008, 16:46
par Jackisback
Euh en fait j'ai trouvé mon erreur .....

Je me loupé entre 'login' et 'inscr_pseudo' ....

Donc en début de page je déclare:
<?php
session_start();
$_SESSION['inscr_pseudo'];?>
Et non pas:
<?php
session_start();
$_SESSION['login'];?>
Oups ..... je mérite une bonne sentence ....

Et sinon tu confirmes que je dois déclarer ce script sur toute mes pages:
<?php
session_start();
$_SESSION['inscr_pseudo'];?>
à la place de:
<?php
session_start();?>
Si oui dans quel but ??? (si ce n'est personnaliser les pages en fonction du membre, choses que je ne devrais pas faire ... pour le moment en tout cas ...)

Posté : 07 oct. 2008, 16:49
par charabia
Houlà mais j'ai l'impression que tu ne lis pas mes posts...Je n'ai rien dit de tel lol.

Jette un oeil sur mon premier post, tout est vraiment marqué dessus.

En gros tu ne déclares qu'une seule fois ta variable de session lors du traitement. Ensuite en début de chaque page tu n'auras plus qu'à mettre session_start et de faire joujou avec ta session.

Posté : 07 oct. 2008, 16:53
par Jackisback
Bah sauf erreur de ma part, tu as écris:

"Ensuite comme l'a indiqué djtec, utiliser ta session $_SESSION['login'] sur toutes les autres pages (sans oublier le session_start())"

Donc pour moi ça voulait dire:

UTILISE TA SESSION $_SESSION['login']
+
(sans oublier le session_start())

Je l'imaginais comme ça ...

Alors que tu voulais certainement dire que sur la page de connexion je devais declarer ma variable $_SESSION['login'] puis ensuite sur toutes les autres pages NE METTRE QUE le session_start()

C'est bien ça ???

MEACULPA

Posté : 07 oct. 2008, 16:56
par charabia
ouiiiiiiiiiiiiii

Posté : 07 oct. 2008, 17:02
par Jackisback
Bah il suffisait de le dire ...

Nan je déconne, on s'était mal compris ....

Merci en tout cas ....

Posté : 07 oct. 2008, 18:01
par AB
session_start(), comme son nom l'indique, démarre une session.

Tu as besoin de démarrer une session pour enregistrer des variables de sessions, mais aussi pour les lire. Donc dans toutes les pages qui utilisent des variables de session.

Eventuellement quand tu as du code imbriqué et que tu ne veux pas t'embêter à vérifier manuellement si une session est déjà démarrée tu peux utiliser
if (!session_id()) session_start();
Cette instruction démarre une session uniquement si une session n'est pas déjà démarée auparavant.
C'est utile car déclarer deux fois session_start() provoquerait un message d'erreur.