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

arnold002 121 Messages postés mercredi 27 octobre 2004Date d'inscription 5 mars 2007 Dernière intervention - 4 mars 2007 à 12:27 - Dernière réponse : medhan 1 Messages postés lundi 24 juillet 2006Date d'inscription 28 septembre 2008 Dernière intervention
- 28 sept. 2008 à 14:30
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
arnold002 121 Messages postés mercredi 27 octobre 2004Date d'inscription 5 mars 2007 Dernière intervention - 5 mars 2007 à 15:22
3
Merci
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.

Merci arnold002 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de arnold002
coockiesch 2268 Messages postés mercredi 27 novembre 2002Date d'inscription 13 septembre 2013 Dernière intervention - 4 mars 2007 à 14:06
0
Merci
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???"
Commenter la réponse de coockiesch
arnold002 121 Messages postés mercredi 27 octobre 2004Date d'inscription 5 mars 2007 Dernière intervention - 4 mars 2007 à 14:31
0
Merci
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 ?
Commenter la réponse de arnold002
coockiesch 2268 Messages postés mercredi 27 novembre 2002Date d'inscription 13 septembre 2013 Dernière intervention - 4 mars 2007 à 14:34
0
Merci
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???"
Commenter la réponse de coockiesch
coockiesch 2268 Messages postés mercredi 27 novembre 2002Date d'inscription 13 septembre 2013 Dernière intervention - 5 mars 2007 à 16:07
0
Merci
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???"
Commenter la réponse de coockiesch
medhan 1 Messages postés lundi 24 juillet 2006Date d'inscription 28 septembre 2008 Dernière intervention - 28 sept. 2008 à 14:30
0
Merci
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
Commenter la réponse de medhan

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.