Session en PHP - PHP - Programmation
Marsh Posté le 29-12-2006 à 07:12:02
ca vient de là surement -> $sessid=$_SESSION['sessid'];
Laisse tes sessions telles quel et ne les transforme pas en variable...
Marsh Posté le 29-12-2006 à 09:07:53
Je ne suis pas sur, car dans le cas ou mon erreur se produit, le programme ne rentre jamais dans cette itération :
if(@$_SESSION['sessid'])
{
[...]
}
else
{
echo "Vous n'avez pas ouvert de session";
echo "<p>Click <a href='login.php'>here</a> to be redirected on login page";
exit;
}
Mais dans la seconde qui affiche "Vous n'avez pas ouvert de session", etc...
Ceci dit c'est vrai, il n'est pas bien malin de transformer mes variables de session, je vais revoir çà.
Une autre idée ?
Marsh Posté le 29-12-2006 à 09:25:16
if(isset($_SESSION['sessid'])) {
...
}
ça serait plus propre
Marsh Posté le 29-12-2006 à 09:38:10
Voilà c'est fait, et j'ai mis la page en ligne.
Cà peut résoudre le problème à ton avis ?
Marsh Posté le 29-12-2006 à 10:22:49
Cherche pas, c'est ta transformation des $_SESSION en variable...
Marsh Posté le 29-12-2006 à 10:30:58
par hasard, dans ton php.ini, t'aurais pas laissé register_globals à "on"?
Marsh Posté le 29-12-2006 à 12:48:06
rufo :
Voici le PHPINFO de mon hébergeur :
Pour PHP4 :
http://www.wdmedia-hebergement.net/infos-php4.html
Et pour PHP5 :
http://www.wdmedia-hebergement.net/infos-php5.html
Donc les registers_globals sont activées dans la version php4 mais pas dans la php5. Ca pourrait être à l'origine de mon problème ?
Psykel :
Je ne comprends pas comment cette transformation peut poser problème à ce niveau là puisque elle ne s'effectue jamais. La condition if(@$_SESSION['sessid']) (Maintenant if(isset($_SESSION['sessid']))) n'est jamais validée, et c'est le code contenu dans le else{[...]} qui est exécuté et pas celui du if([...]{[...]}). De plus l'erreur se produit au chargement de ma 1ere page et donc à la premiere exécution de mon id.php.
Enfin, je peux me tromper, si tu peux m'éclairer
Marsh Posté le 29-12-2006 à 12:55:06
Oui, je me trompe de variables...
C'est plutôt celle ci :
$_SESSION['sessid'] = session_id();
$_SESSION['uid'] = $trupass[1];
$_SESSION['ulogin'] = $trupass[2];
$_SESSION['ulvl'] = $trupass[3];
Elles ne sont pas retransmise...
Essaye d'ajouter ça, tu verra si ca fonctionne (juste pour tester) et aprés vois le register_globals
Citation : global $trupass; |
Marsh Posté le 29-12-2006 à 12:59:25
Je viens de virer mes...
$sessid=$_SESSION['sessid'];
$uid=$_SESSION['uid'];
$ulogin=$_SESSION['ulogin'];
$ulvl=$_SESSION['ulvl'];
...et de remplacer les occurences de ces variables dans mon code par des variables de session (bénie soit la fonction "Shearch/Replace in files" de PSPad, c'a má pris 3mn )
Je vais voir avec mon user si ca a résolu son problème.
Marsh Posté le 29-12-2006 à 13:04:23
Arf nos messages se sont croisés
Je vais tester. Pour info, voici les lignes qu génèrent le tableau $trupass (récupération de donées d'une requete SQL) :
$query = "SELECT usr_pass,usr_id,usr_login,usr_admin_lvl,usr_active,usr_valid FROM user WHERE usr_login ='".$login."'";
$result = mysql_query($query);
$trupass = mysql_fetch_array($result, MYSQL_NUM);
Marsh Posté le 29-12-2006 à 13:07:12
global $trupass;
Marsh Posté le 29-12-2006 à 13:07:21
ton user t'aurais pas fait une farce en mettant un ' dans son login?
Vérifie si c'est pas ta requête sql qui renvoie une erreur...
Marsh Posté le 29-12-2006 à 13:08:55
Effectivement, il faut traiter le $login en amont... Y a tellement de choses probables que c'est pas évident de t'aider
Marsh Posté le 29-12-2006 à 13:26:07
Non, son pseudo est correct, j'ai mi un script pour vérifier. Mais je commence à me demander si il me dit bien tout, car tel qu'il me le décrit, c'est tout simplement impossible que celà ce produise... je vais mettre la "global $trupass;" et voir avec lui...
Marsh Posté le 29-12-2006 à 13:32:49
Voici au cas ou les 2 pages incriminées (renomées em *.txt pour le coup) :
Page qui vérifie le login / mdp envoyés par POST et ouvre ensuite la session.
http://www.yahanet.wdmedia-heberge [...] _login.txt
Fichier php inséré via include au debut de chaque page.
http://www.yahanet.wdmedia-heberge [...] txt/id.txt
Marsh Posté le 29-12-2006 à 14:05:50
et sur la première page, tu fais pas de session_start()?
Marsh Posté le 29-12-2006 à 14:10:05
Si tu veux mon avis, ton code est pas trés propre et securisé... Fonctionnalise le ou mieux, crée une classe php dédiée a tes gestions de logins/sessions
Marsh Posté le 29-12-2006 à 14:21:38
rufo a écrit : et sur la première page, tu fais pas de session_start()? |
Si, je la fais quand le login / password a été validé.
if ($trupass[5]=="y" ) // Account is validated : Starting session...
{
session_start();
[...]
Marsh Posté le 29-12-2006 à 14:29:16
YaHa a écrit : Si, je la fais quand le login / password a été validé. |
moi, je l'aurais mis en début de page le session_start()...
Marsh Posté le 29-12-2006 à 14:30:27
Pyksel a écrit : Si tu veux mon avis, ton code est pas trés propre et securisé... Fonctionnalise le ou mieux, crée une classe php dédiée a tes gestions de logins/sessions |
Oui je vais optimiser tout çà mais je manque encore d'un peu de temps et surtout de conaissances, c'est sur que là ca fait brouillon.
Marsh Posté le 29-12-2006 à 01:07:14
Bonjour,
Voila, j'ai crée un petit site web qui utilise des varibles de session PHP.La session normalement est créée lorsque l'utilisateur est indentifié.
Mais avec quelques utilisateur, j'ai un problème : Le site réagit comme si aucune session n'avait été crée (petit message, et renvoi vers la page d'accueil).
Voici le code de ma création de session :
session_start();
$_SESSION['sessid'] = session_id();
$_SESSION['uid'] = $trupass[1];
$_SESSION['ulogin'] = $trupass[2];
$_SESSION['ulvl'] = $trupass[3];
Et voila celui qui checke si mes sessions existent:
(inséré dans un fichier "id.php" que j'apelle au début de chaque page via un include)
session_start();
if(@$_SESSION['sessid'])
{
$sessid=$_SESSION['sessid'];
$uid=$_SESSION['uid'];
$ulogin=$_SESSION['ulogin'];
$ulvl=$_SESSION['ulvl'];
}
else
{
echo "Vous n'avez pas ouvert de session";
echo "<p>Click <a href='login.php'>here</a> to be redirected on login page";
exit;
}
Ce qui est étrange c'est que seulement quelques utilisateurs sont impactés, ce qui pourrait faire penser à un pb de leur coté, mais bon nombre de site utilisent des sessions PHP et ils n'on pas de problème sur ceux là... Je pense plutot que ca vient de mon code qui doit etre un peu "Sale".
Merci d'avance de votre aide et bonnes F6etes à tous