OVH Community, votre nouvel espace communautaire.

Problème de variable de session


Dormeur74
03/02/2015, 07h24
Bref, voici un code de test très simple que j'ai commenté et qui fonctionne sur toutes les versions de PHP (depuis 4.1.0 --> 5.6)
Testé sur un Mutu avec PHP 5.4, 5.5 et 5.6 --> Aucun souci.

Code PHP:
// Paramètres de session
// http://php.net/manual/en/session.configuration.php
// Ici, on utilise uniquement un cookie pour sauvegarder la session
// Et on fait d'autres trucs, à vous de chercher! ;)
ini_set('session.use_cookies',1);
ini_set('session.use_only_cookies',1);
ini_set('session.use_trans_sid',0);
ini_set('session.cookie_httponly',1);
ini_set('url_rewriter.tags','');

// Démarre une nouvelle session
session_start();

// Création d'un nouvel ID de session
session_regenerate_id();

// Récupération de l'ID de session
$sessionId session_id();

// Création d'une variable de session
$_SESSION['verif'] = 'abracadabra'
Je deviens chèvre. J'ai supprimé tous les tests (!isset(), etc.) , me suis contenté du contenu de $_SESSION['verif'] et ce matin tout est rentré dans l'ordre grâce à ton code. Mais sans ce code divin...Même pas eu besoin de réinstaller FF. Vraiment un truc de ouf.
Merci infiniment.

Dormeur74
02/02/2015, 18h16
J'ai beau tourner le pb dans tous les sens (toute la journée) et j'en arrive toujours au même point :

$status = PHP_SESSION_NONE

Je n'ai pas fait d'essais avec d'autres navigateurs que FF et IE. Sur le premier, mon script marche et pas sur le second. C'est ça que je voudrais comprendre. Demain, je réinitialise mon Firefox avec les paramètres par défaut, je le désinstalle et le réinstalle et vais lui faire cracher les tripes.
En tout cas, merci à tous pour la patience. Je vous tiens au courant, car c'est un truc de fou.
Vous devez comprendre maintenant pourquoi je laisse régulièrement tomber et ce, depuis six mois.
Ce pb fait suite à une migration XP vers Seven 64 bits (à deux ou trois mois près), mais ne puis rien affirmer. C'est Firefox que je vais passer à la loupe.

Jikoo
01/02/2015, 18h56
Citation Envoyé par shirokoweb
Quelle version de PHP utilisez-vous ?
L'utilisation de variables super-globales a été supprimée dans la version 5.4.0 de PHP
Bien sûr que non... et encore heureux !
http://php.net/manual/fr/language.va...perglobals.php

Certes, quelques globales ont disparues mais c'est tout.
http://php.net/manual/fr/migration53.deprecated.php

Quant à la version de PHP, $_SESSION fonctionne sur toutes les version de PHP depuis la version 4.1.0 et donc fonctionne toujours avec toutes les version 5.x.
http://php.net/manual/fr/reserved.variables.session.php

Bref, voici un code de test très simple que j'ai commenté et qui fonctionne sur toutes les versions de PHP (depuis 4.1.0 --> 5.6)
Testé sur un Mutu avec PHP 5.4, 5.5 et 5.6 --> Aucun souci.

Code PHP:
// Paramètres de session
// http://php.net/manual/en/session.configuration.php
// Ici, on utilise uniquement un cookie pour sauvegarder la session
// Et on fait d'autres trucs, à vous de chercher! ;)
ini_set('session.use_cookies',1);
ini_set('session.use_only_cookies',1);
ini_set('session.use_trans_sid',0);
ini_set('session.cookie_httponly',1);
ini_set('url_rewriter.tags','');

// Démarre une nouvelle session
session_start();

// Création d'un nouvel ID de session
session_regenerate_id();

// Récupération de l'ID de session
$sessionId session_id();

// Création d'une variable de session
$_SESSION['verif'] = 'abracadabra';

// Affichage
var_dump('ID session: '.$sessionId);
var_dump($_SESSION);

// Suppression de cette variable de session
unset($_SESSION['verif']); 
Donc:
- si ça ne fonctionne pas sur ton navigateur, c'est du côté de ton navigateur qu'il faut regarder. Ton navigateur accepte t'il les cookies?
- si ça ne marche pas du tout, c'est ton code qui n'est pas bon.

As tu testé avec d'autres navigateurs? Opera, Chromium?

Bah moi, mon code marche partout, en ligne et en local, avec toutes les versions de PHP.

Dormeur74
01/02/2015, 16h42
Ca ne change malheureusement rien à mon pb. J'ai intégré ta fonction en tête de page de la façon suivante :
Code:
";
  }
  else if($status == PHP_SESSION_NONE )
  {
    echo "Session Enabled but No Session values Created
"; } else { echo "Session Enabled and Session values Created
"; } $session=$_SESSION['verif']; if (!isset($_SESSION['verif'])) { echo "Erreur 1 : variable de session non initialisee"; exit; } if (empty($_SESSION['verif'])) { echo "Erreur 2 : variable de session initialisee mais vide"; exit; } if ($_SESSION['verif']!='abracadabra') { echo "Erreur 3 : variable de session incorrecte"; exit; } ?>
Et j'obtiens le truc qui me tue à petit feu depuis six mois :

Session Enabled and Session values Created
Erreur 1 : variable de session non initialisee
J'ai l'imprerssion que le pb vient de ce $_SESSION['verif'], mais pourquoi IE s'en accomode-t-il et pas Firefox ? Désolé, je coupe jusqu'à demain.

buddy
01/02/2015, 16h01
Comme il l'a dit çà a été modifié depuis php 5.4. Il faut chercher la "nouvelle manière".

j'ai trouvé çà "rapidement" http://www.xpertdeveloper.com/2012/0...tatus-php-5-4/ je ne dis pas que c'est la solution ..

Dormeur74
01/02/2015, 15h06
Si ça peut aider quelqu'un :


Dormeur74
01/02/2015, 13h49
Citation Envoyé par shirokoweb
Quelle version de PHP utilisez-vous ?
L'utilisation de variables super-globales a été supprimée dans la version 5.4.0 de PHP
phpinfo() m'indique la version 5.5.21

shirokoweb
01/02/2015, 09h48
Quelle version de PHP utilisez-vous ?
L'utilisation de variables super-globales a été supprimée dans la version 5.4.0 de PHP

Dormeur74
01/02/2015, 09h11
Citation Envoyé par Rizz
Aller c'est partit on spécule sur windows

Avant de faire un include.. tu dois faire ton session start. je pense. 6mois pour ca /
J'espere que c'est pas n'imp dans la base
J'avais déjà essayé, il y a environ 6 mois Rien n'y fait, que mes pages privées commencent par :

Code:



bla.bla.bla...
par :

Code:



bla.bla.bla...
ou par :

Code:



bla.bla.bla...
Autre pb qui n'a rien à voir avec celui des sessions :
J'ai coché la case discussion, sélectionné l'option "Notification instantanée par email" et pourtant je n'ai pas été averti de ta réponse. Et ceci est vrai pour la plupart des forums PhpBB auxquels je participe. Ca, ça me dérange encore plus.

Rizz
31/01/2015, 11h09
Aller c'est partit on spécule sur windows

Avant de faire un include.. tu dois faire ton session start. je pense. 6mois pour ca /
J'espere que c'est pas n'imp dans la base

Dormeur74
31/01/2015, 07h51
Bonjour tout le monde,
Ca fait six mois que je cherche une solution à un problème qui me fait tourner en bourrique. Je vous le décris avec un maximum de détails.

Le site qui me pose problème est constitué de pages ouvertes au public et de pages privées. Pour accéder aux pages privées, je compare le login et le password du visiteur aux identifiants stockés dans une base Mysql lors de l'inscription.
- s'il n'y a pas concordance, le visiteur est dirigé vers une page publique où lui est expliqué la nécessité de s'inscrire. Jusque là, rien de bien sorcier.
- s'il y a concordance, j'ouvre une session à l'aide d'un code très simple et dirige le visiteur vers la page d'accueil privée (main4.php).
Code:
	
    session_start();
    $_SESSION['verif'] = 'abracadabra';
    header($path."main4.php");
Je précise que le contenu de $path est bon.

La page main4.php (comme toutes les pages privées) commence par la vérification de la session.
Code:




bla...bla...bla
C'est le fichier protected/verif.inc.php qui se charge de vérifier la session. Je vous le livre tel quel :

Code:
Sous Firefox, j'obtiens l'erreur suivante :
Array() Erreur 1 : variable de session non initialisee
tout fonctionne normalement sous Internet Explorer, où la page main4.php s'affiche bien. Lors de la vérification, le contenu de ma variable de session est correct :
Array ([verif] =>abracadabra)
Côté Firefox, j'ai tout essayé, jusqu'à la réinstallation), rien n'y fait. Essayé tous les paramétrages possibles au sujet des cookies. Je me demande si le problème ne vient pas de Windows Seven 64 bits.
Si quelqu'un a eu ce pb, sa solution m'intéresse au plus haut point. Merci d'avance.