les SESSIONS

Mammouth du PHP | 843 Messages

20 sept. 2006, 07:33

salut à tous :)

je débute actuellement avec les sessions et je me pose encore beaucoup de question... :-k

1°) dans le tuto de Cyruss, il dit que "php efface de lui-même la session au bout d'un certain temps". Oui, mais combien de temps et est ce parametrable?

2°) si "session.save_path= '/tmp'", est ce que cela veut dire que le cookie est stocké sur server, ou bien le cookie et le fichier présent dans le dossier /tmp de php n'ont rien à voir?

3°) sur chaqune de mes pages, même si le visiteur n'est pas connecter, j'ouvre une session avec session_start()... Si il ce connect pas de soucis, la session reste la même. Mais que penser vous du fait d'ouvrir des sessions "vide" en terme de sécurité?

4°) j'ai un script de deconnection comme suit:
<?php
session_start();
// on detruit la session en cours
session_destroy();
session_unset();
$user = 'Invit&eacute;';
?>
le fichier correspondant à la session dans /tmp est effacer et un echo $_SESSION['pseudo']; ne revoi plus rien. Penser vous qu'il reste des traces de la session quelque part?

bien sur, je n'est pas que des questions mais aussi des petits problème :?

5°)j'aimerai trouver un moyen de faire un session_start(); que si une session est activé pour l'utilisateur (donc que si il c'est identifier) et ce afin de ne pas ouvrir de session si un visiteur surf en invité. comment puis-je faire?

Merci d'avance et désolé pour la tartine de bon matin ;)

Ps. penser à préciser le n° de question [-o<
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 843 Messages

20 sept. 2006, 08:43

ok j'ai deja trouver pour la question 1°): par défault, la durée de vie du cookie est jusqu'à fermeture du navigateur.

c'est paramètrable en utilisant session.cookie_lifetime entier avec entier en seconde.

mais je ne voit pas trop la difference entre le cokie et le fichier de session créé dans /tmp de php (cf question 2°) :?

sinon pour les autres questions je trouve toujours pas donc si quelqu'un veut bien m'aider ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 sept. 2006, 09:11

1°) dans le tuto de Cyruss, il dit que "php efface de lui-même la session au bout d'un certain temps". Oui, mais combien de temps et est ce parametrable?
si la directive session.lifetime = 0, la session va vivre jusqu'a la fermeture du navigateur, sinon elle va durer pour le nombre de seconde que tu lui donne
2°) si "session.save_path= '/tmp'", est ce que cela veut dire que le cookie est stocké sur server, ou bien le cookie et le fichier présent dans le dossier /tmp de php n'ont rien à voir?
Cette directive permet de définir sur le serveur, où vont être stockées les fichiers de session (fichiers contenant les variables de session). Les cookies sont placé chez le client, ne contiennent que l'identifiant de session afin de savoir quel fichier de session le serveur doit consulter.
3°) sur chaqune de mes pages, même si le visiteur n'est pas connecter, j'ouvre une session avec session_start()... Si il ce connect pas de soucis, la session reste la même. Mais que penser vous du fait d'ouvrir des sessions "vide" en terme de sécurité?
Une session "vide" n'est pas une faille de sécurité puisqu'elle est autant sécurisé qu'une session non vide
4°) j'ai un script de deconnection comme suit:
<?php
session_start();
// on detruit la session en cours
session_destroy();
session_unset();
$user = 'Invit&eacute;';
?>
le fichier correspondant à la session dans /tmp est effacer et un echo $_SESSION['pseudo']; ne revoi plus rien. Penser vous qu'il reste des traces de la session quelque part?
A la rigeur, il est possible qu'il reste le cookie de session chez le client mais comme la session n'existe plus sur le serveur, il est innofensif
5°)j'aimerai trouver un moyen de faire un session_start(); que si une session est activé pour l'utilisateur (donc que si il c'est identifier) et ce afin de ne pas ouvrir de session si un visiteur surf en invité. comment puis-je faire?
Prennons la question autrement ;)
Comment savoir qu'il est identifié si tu ne regardes pas en session ? Celà risque d'être assez lours à gérer.

Je te conseille plutot de mémoriser en session qu'il s'agit d'un invité et d'adapter le fonctionnement de ton site à ce cas ;)

pfou, m'en vais me faire un café moi maintenant :sleeping:

EDIT --
Je viens de tomber sur un tuto sympa
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 843 Messages

20 sept. 2006, 09:30

merci Zeus pour ces réponse précise et aussi pour le lien vers le TUTO ;)

Pour la question 5°) j'ai trouver un exemple dans les commentaire de la doc php mais pas moyen que ça marche... :(
if(session_id != '' )
{
// si session_id retourne une valeur pour la session active, on peut initialiser
session_start();
}
// sinon on poursuit sans initialiser la session
il n'y aurai pas moyen de s'en sortir avec un truc du style?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 sept. 2006, 10:23

A la rigueur pourquoi pas :-k
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 843 Messages

20 sept. 2006, 10:35

pour ce que tu ma dit pour la question 1°), je ne trouve pas de session.lifetime = 0 nul part...
par contre j'ai bien session.cookie_lifetime = 0 pour les cookies.
est tu sur qu'elle existe? [EDIT] le tuto que tu ma conseiller est erroné ;)

et pour la question 5°), je comprend pas pourquoi ça marche pas. même lorsque j'ouvre une session, aucun fichier de session ne ce créé dans /tmp :-k
<?php if(session_id != '' )
{
// si session_id retourne une valeur pour la session active, on peut initialiser
session_start();
}
// sinon on poursuit sans initialiser la session ?>
si quelqu'un à une idée ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 843 Messages

20 sept. 2006, 12:43

bon, tous mes problème sont reglé à l'exeption du dernier... :(

je suit dessus depuis 5h du mat et pas moyen d'arriver à quelque chose de potable :cry:

si quelqu'un connait un moyen de détecter si une session existe pour l'utilisateur en cours...

Merci d'avance ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

20 sept. 2006, 12:51

Pour le nom du paramètre, cela se configure dans le php.ini si tu as la main sur ton serveur, sinon : RTFM

Sinon que cherches-tu précisément à faire ?

session_start() a deux actions :
- cela crée une session si elle n'existe pas
- cela donne accès aux variables de session si la session existe déjà

Un invité peut surfer en invité en ayant une session qui ne contient pas de variables. Peut-être que session_register() peut t'aider ?

http://fr2.php.net/manual/fr/function.s ... gister.php
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 843 Messages

20 sept. 2006, 17:45

j'arrive à me debrouiller en faisant des enregistrement de variable avec $_SESSION['$pseudo'] lors de l'identification et en verifiant si il y à quelquechose dans cette variable avec !empty($_SESSION[''] par exemple


par contre j'ai lu à plein d'endroit de la doc que si on utilise $_SESSION, il y a plein de fonction qui marche pas :?

donc j'ai essayer de faire la même chose avec session_register('pseudo') = $pseudo; et pour verifier si la variable existe en session, je fait comme suit:
<?php
session_start();
$pseudo = session_is_register('pseudo'); // ici l'erreur
if($pseudo == 'true')
{
// j'autorise l'acces à cetaine page car identifier
}
else
{
// acces limiter pour cette session
}
mais j'ai une erreur du style:
Parse error: parse error in c:\... on line 3
pouver vous m'aider ;)

ps. j'ai abandonner mon précedent problème d'empecher d'ouvrir des sessions aux utilisateur non identifier mais je souhaite utiliser les sessions sans passer par l'utilisation de la superglobale $_SESSION comme je l'explique au debut de ce message
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

20 sept. 2006, 17:51

Je ne comprends pas pourquoi tu t'entêtes à ne pas te servir des superglobales ($_SESSION) mais peu importe.

Pour ta parse error, je crois que tu devrais aller voir sur le site php.net Tu connais ce site ?

Par ailleurs, si tu veux tester une variable booleenne, pour savoir si elle vaut TRUE ou FALSE, c'est encore plus simple que ce que tu as fait :
if($mavar){
    echo 'elle vaut TRUE';
}
ou bien, si tu es plus rigoureux
if($mavar === true){
    echo 'elle vaut TRUE';
}
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 843 Messages

20 sept. 2006, 18:05

en faite c'est mon expression avec session_is_register() qui contient la parse error ;)

pour ce qui est de la methode, merci du conseil mais pour le moment j'essaye d'aprendre à me servir des fonctions session_is_register(), session_register(), et session_unregister()...

si quelqu'un utilise ces fonction et voit d'où vient la parse error ;)

@mere-teresa: regarde le lien vers php.net que tu m'a donner et regarde ce qui est ecrit dans le cadre attention et tu comprendra pourquoi je suit retissant à $_SESSION (bien qu'il fonctionne mais sur toutes les fonction des session, pas mal contienne le même avertisement et je souhaite utiliser pleinnement ces session...) ;)
Modifié en dernier par BeRoots le 20 sept. 2006, 18:11, modifié 1 fois.
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

20 sept. 2006, 18:07

j'essaye d'aprendre à me servir des fonctions session_is_register()
Et si tu vérifiais l'orthographe de cette fonction ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 843 Messages

20 sept. 2006, 18:16

merci c'était bien l'orthographe qui me faisai default (comme souvent d'ailleur :oops: ).

si quelqu'un peut m'expliquer ce que j'ai mis à mere-teresa dans mon precedent message ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

20 sept. 2006, 18:23

En fait, ce que je ne comprends pas, ce sont les raisons qui te poussent à rejeter la variable $_SESSION.

Est-ce pour la sécurité ?
Pour la compatibilité ?

Je sais bien que tu ne peux pas cumuler les deux usages, les sessions nommées et la superglobale.
Cependant, pour ma part, je lis :
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.
Or dans les versions récentes de PHP, la directive register_globals est par défaut à OFF.

Donc, quel est ton souci si même pour les visiteurs une session se crée (mais qu'elle ne se remplit pas de variables ou qu'elle n'est pas nommée) ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 843 Messages

20 sept. 2006, 18:37

en faite je t'explique car il n'y a rien à comprendre en fait :? :lol:

ce matin tout fonctionnait à merveille en utilisant $_SESSION mais il a fallut que je cherche à comprendre ces fonctions de sessions nommées.
en fait je commence à comprendre qu'on peut très bien s'en passer et tout faire avec $_SESSION...

pour ce qui est de créé des session pour les invités, j'ai laissé tombé le fait d'essayer de ne pas ouvrir de session car j'ai compris que d'ouvrir des session vides n'est pas un mal en soit ;)

MERCI POUR VOTRE AIDE A TOUS ;)
je met résolut et je ferme le topic car on c'est pas mal égarer au final :lol:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non: