Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/09/2006, 01h09   #1
Invité de passage
 
Inscription : septembre 2006
Messages : 15
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 15
Points : 3
Points : 3
Par défaut Problème de variable de session.

Bonjour à tous,

Je rencontre un problème de variable de session sur mon site (3w.profilicc.com) suite au déménagement de ce dernier de chez Free à un hébergeur payant. Je tiens à signaler que je suis un gros newbie en php, css et html (et le but de tout newbie est de ne pas le rester trop longtemps

J'ai lancé easyphp sur mon pc pour acceder par Explorer au contenu local de mon site afin de tester le comportement de la variable. Comme sur le serveur distant, 1 fois sur 2, la variable n'est pas trouvée et un message apparait au dessus de la page affichée :
Citation:
Notice: Undefined variable: var in c:\program files\easyphp1-8\www\profilicc_sommaire_accueil.php on line 11
Et voici le code de ma variable :

Code :
1
2
3
4
5
6
7
8
9
10
11
 <?php
session_start() ;
 
if(isset($_SESSION['var'])) 
echo '';
else {$var = mt_rand (1, 8);
}
 
$_SESSION['var'] = $var ; 
 
?>
Lorsque le site était chez free et conformément à ses indications, j'avais placé un dossier vide nomé "sessions" à la racine de site. Chez mon nouvel hébergeur, avec ou sans ce dossier, je rencontre toujours le même problème de session.

Quelqu'un peut-il m'aider ?
^__^
snowball_party est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 01h23   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Tout d'abord je poserai une question. Cette notice arrive lorsque c'est la première page et que tu n'as pas défini ta variable session ou c'est après ?

Car dans l'un des cas $var n'existe pas et c'est ce que veut te dire le notice

Je dirais, fais comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 <?php
session_start() ;
 
if(isset($_SESSION['var'])) 
{
    echo '';
}
else {
     $var = mt_rand (1, 8);
     $_SESSION['var'] = $var ;
}
?>
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 02h40   #3
Invité de passage
 
Inscription : septembre 2006
Messages : 15
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 15
Points : 3
Points : 3
A la premiere page, la variable fonctionne. Si je clic sur un lien, la page suivante va s'afficher mais avec cette erreur de variable (l'affichage de la page est incomplet car il n'a pas accedé au dossier relatif à la variable). Si je reclic une troisieme fois sur un lien, la variable disparait à nouveax ... et ainsi de suite.

Donc je perd puis retrouve une variable clic après clic. Alors qu'avant, une fois la variable déterminée, ma session restée en place.

J'ai testé ton code Kerod. C'est pas mieux.
snowball_party est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 03h32   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Avant ça fonctionnait peut être à cause de la configuration dans le php.ini qui le permettait (). A mon avis, ton nouveau php.ini ne le permet plus.

Pour plus de détail, avant d'une variable session pouvait se faire par l'appel du nom lui même, donc si tu avais $_SESSION['var'] tu pouvais l'appeler également $var.

Pour revenir à ton problème, ça m'étonne que ça fonctionne pas

Alors j'ai testé comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
<?php
session_start();
 
if(!isset($_SESSION['var'])) 
{$var = mt_rand (1, 8);
}
 
$_SESSION['var'] = $var ; 
 
?>
Et j'obtiens ce message :
Citation:
Notice: Undefined variable: var in d:\utilitaires\easyphp1-8\www\test.php on line 8
Mais si on fait comme je te l'ai dit plus haut :
Code :
1
2
3
4
5
6
7
8
<?php
session_start();
 
if(!isset($_SESSION['var'])) 
{$var = mt_rand (1, 8);
$_SESSION['var'] = $var ; 
}
?>
Alors aucun message d'erreur

ps : j'ai réduit le code au minimum nécessaire
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 11h18   #5
Invité de passage
 
Inscription : septembre 2006
Messages : 15
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 15
Points : 3
Points : 3
Arff ! ça marche toujours pas.

Je viens de discuter avec mon hébergeur qui apporte les éléments suivant :

____________

" PHP5 est installé sur le serveur. Cela peut avoir une incidence aussi, si le script a été codé pour PHP4. Tout dépend des fonctions utilisées. Mais si c'est 1 fois sur deux j'opte malgré tout pour une erreur de codage.

Normalement la variable de session est définie et stockée par PHP lui-même. La où tu peux rencontrer un problême c dans les chemins absolus de ton script et donc si tu as "bidouillé" un dossier spécial de stockage de ces variable il me semble possible que ton script soit incapable de le retrouver du fait que le "path" n'est plus le même."
_____________

Voilà. Je ne sais pas comment modifier le path ni à quoi il correspond dans le codage. Je ne sais pas non plus comment on réencode du php 4 en php 5.
snowball_party est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 12h17   #6
Membre expérimenté
 
Avatar de tigunn
 
Homme
Développeur de bug
Inscription : janvier 2003
Messages : 526
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur de bug

Informations forums :
Inscription : janvier 2003
Messages : 526
Points : 548
Points : 548
Salut SnowBall_Party !

juste une tentative a faire :
essaye de renommer ta variable $var.
__________________
"le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
de Avicenne

Le monde se divise en deux: ceux qui utilisent le tag et les autres.

Un problème? venez en découdre!
tigunn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2006, 12h34   #7
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
Bon ton erreur est du au fait que free a des disposition particuliere tres chiante.

Je m'explique pour free, toutes variables $_Session['xxx'] et $_GET['yy'] peut etre recupere de cette facon $yy et $xxx au lieu de passer par les methodes classiques.
Ce qui est en fait fortement deconseillé dans les doc php.
Tout les autres ne le font plus resultats ta variable $yy qui etait en fait $_get['yy'] chez free est maintenant une variable a part entiere qui ne vaut plus rien maintenant puisque rien n'y est affecté.
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2006, 15h38   #8
Invité de passage
 
Inscription : septembre 2006
Messages : 15
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 15
Points : 3
Points : 3
Problème résolu après moultes investigations ! Le code de la variable est bon pour php 4 mais pas assez "rigoureux" pour php 5, la version en place sur le seveur de mon hébergeur. Merci d'ailleurs à lui pour le coup de main / webdomain is pro ;-)

Le code correct :

Code :
1
2
3
4
5
6
7
8
 <?php
session_start() ;
if(isset($_SESSION['var']))  
  $var = $_SESSION['var'];
  else {$var = mt_rand (1, 8);
  }
$_SESSION['var'] = $var ; 
?>
Merci à tous aussi pour avoir posté ! I'm less newbie now.
snowball_party est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h06.


 
 
 
 
Partenaires

Hébergement Web