Posez votre question Signaler

Session easyphp 1.8

jerome2 31Messages postés 26 mai 2005Date d'inscription - Dernière réponse le 12 avril 2007 à 17:19
bonjour,
j'ai besoin de savoir à quoi doit ressembler ma configuration pour pouvoir utiliser les sessions...
j'ai fait un exemple tout simple de session tiré d'un tuto, et il ne marche pas : lorsque je teste si la session existe, (isset), la reponse est toujours false alors que lorsque je vais voir le fichier tmp dans lequel sont stockées les sessions, elles apparaissent bien...
quelqu'un peut-il m'éclairer sur ce sujet...?
d'avance: merci
Lire la suite 

Session easyphp 1.8 »

Suggestions
33 réponses
Réponse
+0
moins plus
salut,
comment fais tu tes tests isset ? $_SESSION est un tableau, peut etre que c'est juste une mauvaise utilisation ?
jerome2- 27 mai 2005 à 10:13
ben je fais comme ça:
if (isset($_SESSION['nom']))

il me semble que c'est bon...
en plus, je teste un petit exemple tiré d'un tuto...
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Jette un coup d'oeil par là et utilise l'exemple:
http://www.nexen.net/docs/php/annotee/ref.session.php?lien=sessions

A savoir, que 'isset()' sert juste à vérifier qu'une variable à bien été déclarer, donc existe, mais elle peut avoir une valeur 'NULL' ou '0' ! etc...
bye @+
jerome2- 27 mai 2005 à 10:18
ok, mais ce qui ce passe, c'est que la condition :
if (isset($_SESSION['nom']))

n'est jamais vérifiée...et je ne comprends pas pourquoi
Ajouter un commentaire
Réponse
+0
moins plus
tu demarres bien ta session avant tout envoi de header ?
jerome2- 27 mai 2005 à 10:36
ben ouai, je te montre la page en question :
<?
session_start();
if (isset($_SESSION['nom']))
	{$nom=$_SESSION['nom'];}
else {$nom="mais votre nom a été effacé";}
?>
<html>
	<body>
		Vous êtes toujours parmis nous
		<b><? echo $nom; ?></b>.<br />
		Effacement de votre nom en cliquant
		<a href="page4.php">ici</a>.<br />
		Effacement de votre session en cliquant
		<a href="page5.php">ici</a>.<br />
	</body>
</html>


et sur toutes mes pages, je démarre toujours de la même façon :
<?
session_start()
...
?>


voilà...en tout cas, merci de ton aide :)
Ajouter un commentaire
Réponse
+0
moins plus
Ok, je vois.
Ton problème vient de la portée de ta variable $nom.
Lorsque tu fermes php (?>), elle n'est plus définie ! tu peut refaire ton test plus tard car $_SESSION, comme $_POST ou $_GET sont globales. Le problème ne vient absoluement pas de ta session.
J'espere que j'ai vu juste ...?
@+
Ajouter un commentaire
Réponse
+0
moins plus
je crois pas que ce soit ça...
j'ai modifié, et ça change rien...
<?
session_start();
?>
<html>
	<body>
		Vous êtes toujours parmis nous
		<b><? if (isset($_SESSION['nom']))
				{$nom=$_SESSION['nom'];}
			  else {$nom="mais votre nom a été effacé";}
			  echo $nom;?></b>.<br />
		Effacement de votre nom en cliquant
		<a href="page4.php">ici</a>.<br />
		Effacement de votre session en cliquant
		<a href="page5.php">ici</a>.<br />
	</body>
</html>

à moins que je n'ai pas fait la bonne modif ?
Ajouter un commentaire
Réponse
+0
moins plus
non, non tes modifs sont correctes... la seule chose qui pourrait faire que ca ne marche pas est que $_SESSION['nom'] soit non definie... tu a bien demarré la Session dans l'autre page ? Sinon peut etre que isset n'a pas l'effet attendu, essaye un petit
echo $_SESSION['nom']; 
pour voir
Ajouter un commentaire
Réponse
+0
moins plus
effactivement, j'ai une erreur :

Notice: Undefined index: nom in c:\program files\easyphp1-8\www\tuto1 session\page3.php on line 10

lorsque je rajoute :
echo $_SESSION['nom'];


mais c'est pas logique puisque la session est démarré dans les 2 autres pages...

page1.php:
<?
session_start();
?>
<html>
	<body>
		<form method="POST" action="page2.php">
			Entrez Votre Nom : <input type="text" name="nom">
			<input type="submit" value="ok">
		</form>
	</body>
</html>


page2.php:
<?
session_start();
$nom=$_POST['nom'];
$_SESSION['nom']=$nom;
?>
<html>
	<body>
		Bienvenue sur ce site <b><? echo $nom; ?></b>.<br />
		Regardons ce qui se passe sur la <a href="page3.php">page</a> suivante.<br />
	</body>
</html>


j'comprends pas...
romain - 27 mai 2005 à 11:21
Je t'avoue que je sèche...
essaye de mettre
$nom=$_POST['nom'];
$_SESSION['nom']=$nom;

dans la balise body, en vérifiant bien que $_POST['nom'] est 'isset' et '!empty'... a part ca... Sorry...
Ajouter un commentaire
Réponse
+0
moins plus
mais c'est bizarre, parce que quand je fais :
echo $_SESSION['nom']

dans page2.php, ça écrit effactivement le nom...
enfin, merci quand même...
Ajouter un commentaire
Réponse
+0
moins plus
tiens moi au courant si tu trouves
Ajouter un commentaire
Réponse
+0
moins plus
d'accord, mais apparemment, on me parle de problèmes de cookies...
Ajouter un commentaire
Réponse
+0
moins plus
ta regardé ton register global dans le php .ini ?? il doit etre ON ! sa marche pas sinon tes sessions ...
jerome2- 27 mai 2005 à 14:33
ben nan, il est à off, mais ça doit marcher quand même...
de toute façon, je viens de faire l'essai en le mettant à on, et ça donne exactement la même chose...
merci quand même :)
Ajouter un commentaire
Réponse
+0
moins plus
ok voici koment on utilise les sessions:

• Enregistrement d’une variable session
session_start(); // active la session
$variable = ………;
session_register("variable"); //pas de $

• Test d’enregistrement d’une variable
session_start(); // active la session
$variable = ………;
session_register("variable"); //pas de $
session_start(); // active la session
if (!session_is_registered(variable))...

• Fin de session , Changement durée session
session_destroy();
session_cache_expire(n);
n=session_cache_expire();

• Informations sur la session
print("nom de session = ".session_name());
print("ID session = ".session_id());

en espérant que ça vous aidera ;)
jerome2- 27 mai 2005 à 15:42
tu veux dire que mon code n'est pas bon...? ça m'étonne, il est tiré d'un tuto...
l'as-tu regardé...?il est juste au dessus (page1.php, page2.php, page3.php)
merci quand même, mais je crois qu'il est bon ce code... ;)
Ajouter un commentaire
Réponse
+0
moins plus
Pour ma part je ne suis pas sur que ton code soit correct
Je n'est jamais utiliser de mémoire la fonction isset pour des variables de sessions
De plus les infos que je t'ai fourni sont tirées d'un cours php d'un de mes profs!
j'ai pas mal fait d'intranet cette année et j'ai pas souvenir d'avoir utiliser la fonction isset pour des variables de session mais plus souvent pour des cookies
Vérifie que ça fonctionne avec les fonctions que je t'ai fourni
Bon courage

NB: ne pas tjs se fier à des exemples de tuto

ciao
Ajouter un commentaire
Réponse
+0
moins plus
re moi

je viens d'examiner vite fait ton code php
A quel moment tu créés tes variables de sessions?
je vois pas l'instruction session_register
C peut etre pour ça que ton isset ne fonctionne pas

bon courage
Ajouter un commentaire
Réponse
+0
moins plus
je cite php.net, la bible :
Attention
Si vous voulez que votre script fonctionne indépendamment de la configuration de la directive register_globals, vous devez utiliser la variable $_SESSION. Tous les éléments de $_SESSION sont automatiquement enregistrés. Si votre script utilise session_register(), il ne fonctionnera pas dans les environnements où register_globals est désactivée.
jerome2- 27 mai 2005 à 16:15
ben voilà,
du coup, faut pas que j'utilise session_register() vu que mon script utilise $_SESSION, et de plus, j'ai pas besoin d'utiliser le register_global à ON.
vraiment, le code doit être bon...
en plus, il y a quelqu'un qui l'a testé chez lui en local, et il fonctionne!!!
Ajouter un commentaire
Réponse
+0
moins plus
je confirme ce que je disais, allez a cette adresse :
http://uk.php.net/manual/fr/function.session-register.php

en résumé, session_register est deprecated...
jerome2- 27 mai 2005 à 16:17
désolé, un petit temps de retard...
Ajouter un commentaire
Réponse
+0
moins plus
Autant pour moi!!

Je viens de vérifier ton code, il me parait bon!
Par contre jvois pas trop l'utilité de ton <? session_start() ?> pour la page1.php vu ke tu fé aucun appel à $_SESSION(...)

Sinon pour la configuration de php.ini fait gaffe ke tu n'est pas mit on à une ligne ké en commentaire en effet register_global apparait plusieurs fois dans le fichier php.ini

dsl ke t conseils ne té rien apporté

Bon courage
jerome2- 27 mai 2005 à 16:45
c'est rien, c'est rien...
effectivement, il ne sert à rien le session_start de page1.php...
c'était dit dans le tuto...
pour le registers_global, ils sont bien tous à off...

merci quand même!!!
Ajouter un commentaire
Réponse
+0
moins plus
si quelqu'un a une autre idée, on verra ça lundi...
bon week end à tous!
Waga - 29 mai 2005 à 15:57
Salut,

j'ai eu le même probleme que toi avec Easyphp 1.8 et les sessions

il faut à la fois faire un register ET utiliser $_SESSION

Page 1
$user_pass="password"
session_start();
session_register ("user_pass");
$_SESSION["user_login"] =$user_pass;


Page 2
session_start();
echo $_SESSION["user_login"] ;

en esperant t'avoir aidé !

A+
Waga
jerome2- 30 mai 2005 à 10:29
ben écoute, moi, j'y arrive pas...

peux-tu tester chez toi un tout petit exemple qui marche et m'envoyer le code stp?
comme ça je vérifierai si ça fonctionne aussi sur mon ordi...

par contre, j'ai une autre question:
est-il possible que cela na marche pas à cause d'un par-feu qui stopperait les cookies par exemple ?
Ajouter un commentaire
Réponse
+0
moins plus
pour le registers_global, ils sont bien tous à off...


Il doive etre à ON justement..


jte conseil d'installer easy php 1.7 et d'essayer avec cette version, jte pari que sa fonctionnera :D
Waga - 29 mai 2005 à 18:09
Non surtout pas, cette variable est désactivée pour une bonne raison, ça marche très bien avec OFF
Ajouter un commentaire
Réponse
+0
moins plus
romain, tu voulais que je te tienne au courant:
bon ben voilà, j'ai enfin trouvé, c'était mon firewall qui me bloquait les cookies...

merci à tous ceux qui m'ont aidés :)
Ajouter un commentaire
Ce document intitulé « session easyphp 1.8 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
session easyphp 1.8 - page 2