Sessions : passage de PHP4 à PHP5 [Résolu]

Signaler
Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
5 mars 2007
-
Messages postés
1
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
28 septembre 2008
-
Bonjour à tous,

Je fais tourner un site web en local grâce à EasyPhp.
Je viens de passer de la version 1.8 (PHP4) à la version 2.0 (PHP5).
Aucun problème sauf.... pour mes sessions.
Il m'est impossible de déclarer mes sessions, les variables ne se créent pas.

Voici un aperçu du code que j'utilise et qui fonctionne correctement sur PHP4 (en local et sur le serveur web).

Page qui vérifie si un utilisateur existe :

session_start();
$verif

= mysql_query
( 'SELECT nom,prenom,,id,ip FROM membre WHERE login =\''
.mysql_real_escape_string
($login
).'\' AND pass = \''
. md5
($pass
).'\' 
'
,$connexion
)
ordie
(mysql_error
());

if(mysql_num_rows
($verif
)
>
0){
session_register
("authentification"
);
$_SESSION
= mysql_fetch_assoc
($verif
);
$_SESSION
[ 'authentification'
]
=
true ;
$checkplus
= $_SERVER
[ 'HTTP_USER_AGENT'
];
$_SESSION
['userCheck'
]
= md5
($_SESSION
['ip'
].$checkplus
);
setcookie
('SID'
,md5
(uniqid
(rand
(),
true)),$timestamp_expire_id
,'/'
); 
header
('Location: ./accueil.php'
);
exit
();
}

Sur la page accueil.php :
session_start

();
if

(isset
($_SESSION
['authentification'
])
&&$_SESSION
['authentification'
]
= =
true ){
$checkplus
=$_SERVER
[ 'HTTP_USER_AGENT'
];
$check
= $_SERVER
['REMOTE_ADDR'
];

if($_SESSION
['userCheck'
]
! = md5
($check
.$checkplus
)
&&
!isset
($_COOKIE
[ 'SID'
])){
header
('Location: ./index.php?erreur = erreur'
);
exit
();

}

}

else{
header
('Location: ./index.php?erreur =erreur'
);
exit
();

}

J'ai pas mis l'ensemble des variables utilisées, juste celles qui sont nécessaires dans le cas présent.
J'ai laissé le config du php.ini par défaut.
Est ce un probleme de code de ma part ou une mauvaise configuration du php.ini ?
Je n'ai pas vraiment étudié les différences sur la gestion des sessions entre PHP 4 et 5.
Merci de votre aide

6 réponses

Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
5 mars 2007

Bonjour,


Après quelques tests, je viens de m'apercevoir que le probleme des sessions qui ne se transmettent pas de page en page, ne provient pas de la configuration du php.ini, ni même du codage que j'emploi, mais provient de la version de php installée dans easyphp 2.0.
La version installée dans easyphp est la version 5.2.0. Après vérification sur php.net, j'ai upgradé la version pour passer en 5.2.1, qui corrige certains bugs.
Après redémarrage de easyphp et sans rien modifier à mon code (hormis la suppression de session_register('authentification') ), les variables de session se transmettent bien de page en page.
Problème résolu.
Merci à  coockiesch pour son aide.
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Y'a qq trucs qui me gênent:
- on utilise pas session_register
- je comprend pas trop: $_SESSION = mysql_fetch_assoc( $verif );
  >> on fait pas ca, comme ca, en règle générale: $_SESSION['nom'] = $variable;

Quel est le pb, exactement?

@++

R@f

La boîte à bouts de codes
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
5 mars 2007

Bonjour et merci de ta réponse !
Mon probleme, c'est que la session(authentification) ne s'initialise pas. Aucune variable de session (nom, prenom etc...) ne se créé.
Je voulais savoir si c'était un problème de codage (ce qui semble être le cas) ou une conséquence du passage de PHP4 à PHP5.
L'authentification que j'utilise m'a été fournie par un membre de ce forum, il y a quelques mois déjà, voila pourquoi j'utilise $_SESSION = mysql_fetch_assoc( $verif );
Auparavant, j'initialisait toutes variables les unes après les autres.
Si je ne dois pas utiliser session_register(), je le remplace par qqe chose ?
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Heu... oui, dsl pr le mysql_fetch_assoc, c'est moi qui suis à la masse... :D

session_register fonctionne comme ceci:
$var = 'aaa';
session_register("var"); // ici, $_SESSION['var'] = aaa

A la place, on fait:
$_SESSION['var'] = 'aaa';

@++

R@f

La boîte à bouts de codes
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Lol, de rien! Mais j'ai rien fait, :D

@++

R@f

La boîte à bouts de codes
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
1
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
28 septembre 2008

Monsieur Arnold, ou les autres amis,


J'ai le même le problème que le tiens.! J'ai developpé un site par php de easyphp 1.8 (php 4). Mais quand je passe à easyphp 2.0 (php5) mon site ne marche pas.!


J'ai fais des recherches pour trouver la verssion 5.2.1 mais j'ai pas pu la trouver. Je te remercie, Arnold et les autres lecteurs aussi, de m'indiquer où est ce je peux trouver cette verssion.

Merci 1000 fois