Récupérer variable (session) PHP

Fermé
JJblow - 29 juil. 2009 à 15:38
JJBlow Messages postés 44 Date d'inscription jeudi 30 juillet 2009 Statut Membre Dernière intervention 6 novembre 2010 - 30 juil. 2009 à 14:44
Bonjour, je suis novice en programmation mais je m'atèle à apprendre, j'ai réutilisé un script (pour commencer) d'un espace membre avec connexion et page membre, je vois qu'à la connexion il y a une session d'ouverte avec:
session_start();
    $_SESSION['login'] = $login;


Moi, j'ai créé un script qui est une sorte de Chat, il y a un champ titre pour donner un titre à son commentaire et un autre champs pour entrer son message.
Ce que j'aimerais, c'est que, le pseudo du membre soit ajouté automatiquement à la base de données en tant que propriétaire de ce message. En quelque sorte, j'ai dans une table com, les champs suivants, ID (en auto-increment), Titre et Message, je voudrais ajouter un champs Pseudo mais que ce pseudo soit ajouté automatiquement.
Je m'explique moi: si jamais j'avais mis 3 champs lors de la saisie d'un message, le membre pourrait écrire n'importe quoi comme pseudo et même se faire passer pour un autre, moi je veut que le pseudo soit celui qu'il a utilisé pour se connecter, en autre terme, utiliser celui de la session de la page connect.php
Je sais que l'on peut réutiliser cette variable car dans le script que j'ai (l'espace membre), cette variable est justement utilisée car il affiche le pseudo (du membre connecté), il y a ça:
echo '<p>Bonjour ',$_SESSION['login'],'</p>'

On voit donc la variable $_SESSION, comment faire pour l'envoyer lorsqu'un message est saisie ?

Pour enregistrer cette variable dans la base comment puis-je faire ?
J'ai déja ça pour les autres (titre et le commentaire):
if(isset($_POST['envoyer'])) {
$titre = $_POST['titre'];
$message = $_POST['message'];


et j'ai créé sa:
$enr=mysql_query("INSERT INTO minichat(ID ,titre, message) VALUES('','$titre','$message')

Comment ajouter ce pseudo s'il vous plaît ?
Alors je sait que je pose plusieurs questions, mais c'est en fait la même reposée de manière différentes.

Je vous remercie d'avance de votre aide.
Bonne journée.
A voir également:

9 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
29 juil. 2009 à 15:41
dans la page d'enr dans la Base tu mets:

if(isset($_POST['envoyer'])) {
session_start();
$pseudo=$_SESSION['login'];
$titre = $_POST['titre'];
$message = $_POST['message'];


 //et
enr=mysql_query("INSERT INTO minichat(ID ,titre, message,pseudo) VALUES('','$titre','$message','$pseudo')

0
WOA Alain, quelle rapidité, à peine écrit déja une réponse, merci beaucoup de cette réponse d'ailleurs.

Je crois n'avoir jamais vu sa, message posté, message déja répondu.

Je vais tester cela.

Encore merci et bonne journée.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
29 juil. 2009 à 16:41
si tu mets un echo:

if(isset($_POST['envoyer'])) {
session_start();
$pseudo=$_SESSION['login'];

echo "pseudo de session: ".$pseudo;

tu as quoi qui s'affiche ?


0
Bonjour, désolé de n'avoir pu répondre avant.

Donc, encore une fois merci de votre aide, va débuter le 3ème jour que j'ai ce problème que je n'arrive pas à résoudre.

Donc j'ai fait comme vous m'avez demandé avec un echo.

Malheureusement, la variable n'a pas l'air d'être enregistrée car l'echo ne retourne rien:
Voici ce qui m'est affiché:
pseudo de session:

et rien derrière, donc la variable n'a plus l'air d'être encore sauvegardée dans la session.

Merci de votre aide, que j'attends avec impatience.

Bonne journée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
30 juil. 2009 à 09:41
Bizarre, au moment de la connexion a l'espace membre, dans le script de connexion, si le client est bien identifié tu dois avoir:

session_start();
$_SESSION['login'] = $login;

il faudrait que tu nous donnes le code de cette partie

et est ce que comme tu dis plus haut echo '<p>Bonjour ',$_SESSION['login'],'</p>' affiche bien le pseudo
0
Alors encore une fois merci de m'aider.

Je vient en effet, grâce à vos éclaircissements, comprendre quelque chose.
Je ne suis plus sur la page "membre.php", celle vers laquelle on est redirigé après connect.php et là où se trouve
echo '<p>Bonjour ',$_SESSION['login'],'</p>';

donc, comme je ne suis plus sur cette page, la variable de la session ne doit plus être enregistrée (bizarre, je ne savais pas cela, je croyais qu'elle restait enregistrée tant que l'on ne fermait pas le navigateur, et pendant 1 heure par défaut), donc, en fait sur la page membre.php j'ai mis un lien qui fait: commentaires, et quand les membres cliquent dessus, ils sont redirigés vers une page html avec le formulaire (titre, message, envoyer), ils sont donc ensuite renvoyés vers la page 'com2.php' qui enregistre tout avec
$enr=mysql_query("INSERT INTO minichat(ID ,titre, message, pseudo) VALUES('','$titre','$message', '$pseudo')") or die ("Erreur requette ".mysql_error());
mysql_close();

Donc je ne comprend pas. Je pense que c'est pour cela que sa ne marche pas je suis à 3 pages de l'ouverture de la session 'connect.php' donc sans doute que la variable n'est plus enregistrée et a été effacée (? non ?).
Comme je l'ai dit, je suis encore novice, et ne connait le PHP que sous la forme théorique et moins pratique.

Je ne sais donc pas comment garder cette variable de page en page sans l'effacer ni la perdre, enfin, si c'est cela qu'il faut faire, mais j'aimerais éviter de demander à mes membres de se connecter à chaque page.

J'attends de nouveau votre aide, en espérant avoir était compréhensible dans mes affirmations.
Et merci encore.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
30 juil. 2009 à 13:53
je croyais qu'elle restait enregistrée tant que l'on ne fermait pas le navigateur, et pendant 1 heure par défaut
être conservée

OUI tu as tout à fait raison, la variable de session devrait être conservée

si j'ai bien compris dans le script connect.php

si authetif ok tu as

session_start()
$SESSION['login']=$login;
et redirection vers page membre.php


dans membre.php
tu as
session_start()
echo "Bonjour ".$SESSION['login'];


si dans ta page com2.php tu as au début:
session_start()
echo "Variable session ".$SESSION['login'];

ça devrait marcher

mais attention session_start() doit être tout au début du script, juste après <?php
il ne DOIT pas y avoir d'autre balise avant genre <html etc...

donnes moi les codes de tes pages, en MP si tu veux
0
JJBlow Messages postés 44 Date d'inscription jeudi 30 juillet 2009 Statut Membre Dernière intervention 6 novembre 2010 2
30 juil. 2009 à 14:44
Merci beaucoup de ton aide.

Je t'envoie donc ça par MP.

Bonne journée.
0
Désolé mais votre technique ne fonctionne pas.

Le champs "pseudo" dans la base de données reste vide, rien ne s'y enregistre, donc sans doute que rien n'y ai envoyé et ce n'est peut être pas la bonne solution, non pas que je la mette en doute mais sa ne fonctionne pas.

Voilà ce que j'ai dans la page qui envoie:
if(isset($_POST['envoyer'])) {
session_start();
$pseudo=$_SESSION['login'];
$titre = $_POST['titre'];
$message = $_POST['message'];

(votre bout de code)

et
$enr=mysql_query("INSERT INTO minichat(ID ,titre, message, pseudo) VALUES('','$titre','$message', '$pseudo')") or die ("Erreur requette ".mysql_error());
mysql_close();


Mais rien ne s'enregistre dans la base de donnée, enfin, pas pseudo, mais le titre et le message si.

Auriez-vous une solution ? Je suis là-dessus depuis 2 jours maintenant sans trouver de solution.
(je rappel que je m'étais bien connecté avant l'envoie de message)
-1