Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2319 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Session en PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Session en PHP

n°1496885
YaHa
Posté le 29-12-2006 à 01:07:14  profilanswer
 

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". :whistle:  
 
 
Merci d'avance de votre aide et bonnes F6etes à tous  :)  
 
 
 
 
 
 
 
 
 
 
 

mood
Publicité
Posté le 29-12-2006 à 01:07:14  profilanswer
 

n°1496920
Pyksel
Locker fou !
Posté le 29-12-2006 à 07:12:02  profilanswer
 

ca vient de là surement -> $sessid=$_SESSION['sessid'];    
 
Laisse tes sessions telles quel et ne les transforme pas en variable...


---------------
Rien est impossible, il suffit d'y croire !
n°1496931
YaHa
Posté le 29-12-2006 à 09:07:53  profilanswer
 

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 ?

n°1496936
rufo
Pas me confondre avec Lycos!
Posté le 29-12-2006 à 09:25:16  profilanswer
 

if(isset($_SESSION['sessid'])) {
...
}
 
ça serait plus propre

n°1496945
YaHa
Posté le 29-12-2006 à 09:38:10  profilanswer
 

Voilà c'est fait, et j'ai mis la page en ligne.
Cà peut résoudre le problème à ton avis ?

n°1496961
Pyksel
Locker fou !
Posté le 29-12-2006 à 10:22:49  profilanswer
 

Cherche pas, c'est ta transformation des $_SESSION en variable...


---------------
Rien est impossible, il suffit d'y croire !
n°1496969
rufo
Pas me confondre avec Lycos!
Posté le 29-12-2006 à 10:30:58  profilanswer
 

par hasard, dans ton php.ini, t'aurais pas laissé register_globals à "on"?

n°1497042
YaHa
Posté le 29-12-2006 à 12:48:06  profilanswer
 

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 :)

n°1497043
Pyksel
Locker fou !
Posté le 29-12-2006 à 12:55:06  profilanswer
 

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;
 
$_SESSION['sessid'] = session_id();  
 $_SESSION['uid'] = $trupass[1];  
 $_SESSION['ulogin'] = $trupass[2];  
 $_SESSION['ulvl'] = $trupass[3];


---------------
Rien est impossible, il suffit d'y croire !
n°1497048
YaHa
Posté le 29-12-2006 à 12:59:25  profilanswer
 

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.

mood
Publicité
Posté le 29-12-2006 à 12:59:25  profilanswer
 

n°1497051
YaHa
Posté le 29-12-2006 à 13:04:23  profilanswer
 

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);  
 

n°1497053
Pyksel
Locker fou !
Posté le 29-12-2006 à 13:07:12  profilanswer
 

global $trupass;


---------------
Rien est impossible, il suffit d'y croire !
n°1497054
rufo
Pas me confondre avec Lycos!
Posté le 29-12-2006 à 13:07:21  profilanswer
 

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...

n°1497055
Pyksel
Locker fou !
Posté le 29-12-2006 à 13:08:55  profilanswer
 

Effectivement, il faut traiter le $login en amont... Y a tellement de choses probables que c'est pas évident de t'aider


---------------
Rien est impossible, il suffit d'y croire !
n°1497062
YaHa
Posté le 29-12-2006 à 13:26:07  profilanswer
 

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...

n°1497068
YaHa
Posté le 29-12-2006 à 13:32:49  profilanswer
 

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

n°1497082
rufo
Pas me confondre avec Lycos!
Posté le 29-12-2006 à 14:05:50  profilanswer
 

et sur la première page, tu fais pas de session_start()?

Message cité 1 fois
Message édité par rufo le 29-12-2006 à 14:05:57
n°1497086
Pyksel
Locker fou !
Posté le 29-12-2006 à 14:10:05  profilanswer
 

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


---------------
Rien est impossible, il suffit d'y croire !
n°1497090
YaHa
Posté le 29-12-2006 à 14:21:38  profilanswer
 

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();
    [...]

n°1497092
rufo
Pas me confondre avec Lycos!
Posté le 29-12-2006 à 14:29:16  profilanswer
 

YaHa a écrit :

Si, je la fais quand le login / password a été validé.
 
if ($trupass[5]=="y" ) // Account is validated : Starting session...
{
    session_start();
    [...]


 
moi, je l'aurais mis en début de page le session_start()...

n°1497093
YaHa
Posté le 29-12-2006 à 14:30:27  profilanswer
 

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.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Session en PHP

 

Sujets relatifs
[PHP SOAP SESSIONS] Monter en session un objet soapClientEnregistrement des variables de session en PHP
[PHP] Session et objet :??:PHP et les variables de session Probleme
[CREATION] Système personalisé de session (PHP >= 4)[PHP] Problème de checkbox dans une session
[PHP/MySql] Supprimer une table SQL temp dans une session PHPSession PHP, Qui Peut m'expliquer le principe ?
Problème durée session PHPSession PHP
Plus de sujets relatifs à : Session en PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR